1 /**
2 Copyright: Copyright (c) 2016, Joakim Brännström. All rights reserved.
3 License: MPL-2
4 Author: Joakim Brännström (joakim.brannstrom@gmx.com)
5 
6 This Source Code Form is subject to the terms of the Mozilla Public License,
7 v.2.0. If a copy of the MPL was not distributed with this file, You can obtain
8 one at http://mozilla.org/MPL/2.0/.
9 
10 DO NOT EDIT. THIS FILE IS GENERATED.
11 See the generator script source/devtool/generator_clang_ast_nodes.d
12 */
13 module libclang_ast.ast.expression;
14 import libclang_ast.ast.node : Node;
15 
16 abstract class Expression : Node {
17     import clang.Cursor : Cursor;
18     import libclang_ast.ast : Visitor;
19 
20     private Cursor cursor_;
21 
22     // trusted on the assumption that the node is scope allocated and all access to cursor is via a scoped ref.
23     this(scope Cursor cursor) @trusted {
24         this.cursor_ = cursor;
25     }
26 
27     Cursor cursor() return const @safe {
28         return Cursor(cursor_.cx);
29     }
30 
31     override void accept(scope Visitor v) @safe const scope {
32         static import libclang_ast.ast;
33 
34         libclang_ast.ast.accept(cursor_, v);
35     }
36 }
37 
38 final class UnexposedExpr : Expression {
39     import clang.Cursor : Cursor;
40 
41     this(scope Cursor cursor) @safe {
42         super(cursor);
43     }
44 
45     override void accept(scope Visitor v) @safe const scope {
46         static import libclang_ast.ast;
47 
48         libclang_ast.ast.accept(cursor, v);
49     }
50 }
51 
52 final class DeclRefExpr : Expression {
53     import clang.Cursor : Cursor;
54 
55     this(scope Cursor cursor) @safe {
56         super(cursor);
57     }
58 
59     override void accept(scope Visitor v) @safe const scope {
60         static import libclang_ast.ast;
61 
62         libclang_ast.ast.accept(cursor, v);
63     }
64 }
65 
66 final class MemberRefExpr : Expression {
67     import clang.Cursor : Cursor;
68 
69     this(scope Cursor cursor) @safe {
70         super(cursor);
71     }
72 
73     override void accept(scope Visitor v) @safe const scope {
74         static import libclang_ast.ast;
75 
76         libclang_ast.ast.accept(cursor, v);
77     }
78 }
79 
80 final class CallExpr : Expression {
81     import clang.Cursor : Cursor;
82 
83     this(scope Cursor cursor) @safe {
84         super(cursor);
85     }
86 
87     override void accept(scope Visitor v) @safe const scope {
88         static import libclang_ast.ast;
89 
90         libclang_ast.ast.accept(cursor, v);
91     }
92 }
93 
94 final class ObjCMessageExpr : Expression {
95     import clang.Cursor : Cursor;
96 
97     this(scope Cursor cursor) @safe {
98         super(cursor);
99     }
100 
101     override void accept(scope Visitor v) @safe const scope {
102         static import libclang_ast.ast;
103 
104         libclang_ast.ast.accept(cursor, v);
105     }
106 }
107 
108 final class BlockExpr : Expression {
109     import clang.Cursor : Cursor;
110 
111     this(scope Cursor cursor) @safe {
112         super(cursor);
113     }
114 
115     override void accept(scope Visitor v) @safe const scope {
116         static import libclang_ast.ast;
117 
118         libclang_ast.ast.accept(cursor, v);
119     }
120 }
121 
122 final class IntegerLiteral : Expression {
123     import clang.Cursor : Cursor;
124 
125     this(scope Cursor cursor) @safe {
126         super(cursor);
127     }
128 
129     override void accept(scope Visitor v) @safe const scope {
130         static import libclang_ast.ast;
131 
132         libclang_ast.ast.accept(cursor, v);
133     }
134 }
135 
136 final class FloatingLiteral : Expression {
137     import clang.Cursor : Cursor;
138 
139     this(scope Cursor cursor) @safe {
140         super(cursor);
141     }
142 
143     override void accept(scope Visitor v) @safe const scope {
144         static import libclang_ast.ast;
145 
146         libclang_ast.ast.accept(cursor, v);
147     }
148 }
149 
150 final class ImaginaryLiteral : Expression {
151     import clang.Cursor : Cursor;
152 
153     this(scope Cursor cursor) @safe {
154         super(cursor);
155     }
156 
157     override void accept(scope Visitor v) @safe const scope {
158         static import libclang_ast.ast;
159 
160         libclang_ast.ast.accept(cursor, v);
161     }
162 }
163 
164 final class StringLiteral : Expression {
165     import clang.Cursor : Cursor;
166 
167     this(scope Cursor cursor) @safe {
168         super(cursor);
169     }
170 
171     override void accept(scope Visitor v) @safe const scope {
172         static import libclang_ast.ast;
173 
174         libclang_ast.ast.accept(cursor, v);
175     }
176 }
177 
178 final class CharacterLiteral : Expression {
179     import clang.Cursor : Cursor;
180 
181     this(scope Cursor cursor) @safe {
182         super(cursor);
183     }
184 
185     override void accept(scope Visitor v) @safe const scope {
186         static import libclang_ast.ast;
187 
188         libclang_ast.ast.accept(cursor, v);
189     }
190 }
191 
192 final class ParenExpr : Expression {
193     import clang.Cursor : Cursor;
194 
195     this(scope Cursor cursor) @safe {
196         super(cursor);
197     }
198 
199     override void accept(scope Visitor v) @safe const scope {
200         static import libclang_ast.ast;
201 
202         libclang_ast.ast.accept(cursor, v);
203     }
204 }
205 
206 final class UnaryOperator : Expression {
207     import clang.Cursor : Cursor;
208 
209     this(scope Cursor cursor) @safe {
210         super(cursor);
211     }
212 
213     override void accept(scope Visitor v) @safe const scope {
214         static import libclang_ast.ast;
215 
216         libclang_ast.ast.accept(cursor, v);
217     }
218 }
219 
220 final class ArraySubscriptExpr : Expression {
221     import clang.Cursor : Cursor;
222 
223     this(scope Cursor cursor) @safe {
224         super(cursor);
225     }
226 
227     override void accept(scope Visitor v) @safe const scope {
228         static import libclang_ast.ast;
229 
230         libclang_ast.ast.accept(cursor, v);
231     }
232 }
233 
234 final class BinaryOperator : Expression {
235     import clang.Cursor : Cursor;
236 
237     this(scope Cursor cursor) @safe {
238         super(cursor);
239     }
240 
241     override void accept(scope Visitor v) @safe const scope {
242         static import libclang_ast.ast;
243 
244         libclang_ast.ast.accept(cursor, v);
245     }
246 }
247 
248 final class CompoundAssignOperator : Expression {
249     import clang.Cursor : Cursor;
250 
251     this(scope Cursor cursor) @safe {
252         super(cursor);
253     }
254 
255     override void accept(scope Visitor v) @safe const scope {
256         static import libclang_ast.ast;
257 
258         libclang_ast.ast.accept(cursor, v);
259     }
260 }
261 
262 final class ConditionalOperator : Expression {
263     import clang.Cursor : Cursor;
264 
265     this(scope Cursor cursor) @safe {
266         super(cursor);
267     }
268 
269     override void accept(scope Visitor v) @safe const scope {
270         static import libclang_ast.ast;
271 
272         libclang_ast.ast.accept(cursor, v);
273     }
274 }
275 
276 final class CStyleCastExpr : Expression {
277     import clang.Cursor : Cursor;
278 
279     this(scope Cursor cursor) @safe {
280         super(cursor);
281     }
282 
283     override void accept(scope Visitor v) @safe const scope {
284         static import libclang_ast.ast;
285 
286         libclang_ast.ast.accept(cursor, v);
287     }
288 }
289 
290 final class CompoundLiteralExpr : Expression {
291     import clang.Cursor : Cursor;
292 
293     this(scope Cursor cursor) @safe {
294         super(cursor);
295     }
296 
297     override void accept(scope Visitor v) @safe const scope {
298         static import libclang_ast.ast;
299 
300         libclang_ast.ast.accept(cursor, v);
301     }
302 }
303 
304 final class InitListExpr : Expression {
305     import clang.Cursor : Cursor;
306 
307     this(scope Cursor cursor) @safe {
308         super(cursor);
309     }
310 
311     override void accept(scope Visitor v) @safe const scope {
312         static import libclang_ast.ast;
313 
314         libclang_ast.ast.accept(cursor, v);
315     }
316 }
317 
318 final class AddrLabelExpr : Expression {
319     import clang.Cursor : Cursor;
320 
321     this(scope Cursor cursor) @safe {
322         super(cursor);
323     }
324 
325     override void accept(scope Visitor v) @safe const scope {
326         static import libclang_ast.ast;
327 
328         libclang_ast.ast.accept(cursor, v);
329     }
330 }
331 
332 final class StmtExpr : Expression {
333     import clang.Cursor : Cursor;
334 
335     this(scope Cursor cursor) @safe {
336         super(cursor);
337     }
338 
339     override void accept(scope Visitor v) @safe const scope {
340         static import libclang_ast.ast;
341 
342         libclang_ast.ast.accept(cursor, v);
343     }
344 }
345 
346 final class GenericSelectionExpr : Expression {
347     import clang.Cursor : Cursor;
348 
349     this(scope Cursor cursor) @safe {
350         super(cursor);
351     }
352 
353     override void accept(scope Visitor v) @safe const scope {
354         static import libclang_ast.ast;
355 
356         libclang_ast.ast.accept(cursor, v);
357     }
358 }
359 
360 final class GnuNullExpr : Expression {
361     import clang.Cursor : Cursor;
362 
363     this(scope Cursor cursor) @safe {
364         super(cursor);
365     }
366 
367     override void accept(scope Visitor v) @safe const scope {
368         static import libclang_ast.ast;
369 
370         libclang_ast.ast.accept(cursor, v);
371     }
372 }
373 
374 final class CxxStaticCastExpr : Expression {
375     import clang.Cursor : Cursor;
376 
377     this(scope Cursor cursor) @safe {
378         super(cursor);
379     }
380 
381     override void accept(scope Visitor v) @safe const scope {
382         static import libclang_ast.ast;
383 
384         libclang_ast.ast.accept(cursor, v);
385     }
386 }
387 
388 final class CxxDynamicCastExpr : Expression {
389     import clang.Cursor : Cursor;
390 
391     this(scope Cursor cursor) @safe {
392         super(cursor);
393     }
394 
395     override void accept(scope Visitor v) @safe const scope {
396         static import libclang_ast.ast;
397 
398         libclang_ast.ast.accept(cursor, v);
399     }
400 }
401 
402 final class CxxReinterpretCastExpr : Expression {
403     import clang.Cursor : Cursor;
404 
405     this(scope Cursor cursor) @safe {
406         super(cursor);
407     }
408 
409     override void accept(scope Visitor v) @safe const scope {
410         static import libclang_ast.ast;
411 
412         libclang_ast.ast.accept(cursor, v);
413     }
414 }
415 
416 final class CxxConstCastExpr : Expression {
417     import clang.Cursor : Cursor;
418 
419     this(scope Cursor cursor) @safe {
420         super(cursor);
421     }
422 
423     override void accept(scope Visitor v) @safe const scope {
424         static import libclang_ast.ast;
425 
426         libclang_ast.ast.accept(cursor, v);
427     }
428 }
429 
430 final class CxxFunctionalCastExpr : Expression {
431     import clang.Cursor : Cursor;
432 
433     this(scope Cursor cursor) @safe {
434         super(cursor);
435     }
436 
437     override void accept(scope Visitor v) @safe const scope {
438         static import libclang_ast.ast;
439 
440         libclang_ast.ast.accept(cursor, v);
441     }
442 }
443 
444 final class CxxTypeidExpr : Expression {
445     import clang.Cursor : Cursor;
446 
447     this(scope Cursor cursor) @safe {
448         super(cursor);
449     }
450 
451     override void accept(scope Visitor v) @safe const scope {
452         static import libclang_ast.ast;
453 
454         libclang_ast.ast.accept(cursor, v);
455     }
456 }
457 
458 final class CxxBoolLiteralExpr : Expression {
459     import clang.Cursor : Cursor;
460 
461     this(scope Cursor cursor) @safe {
462         super(cursor);
463     }
464 
465     override void accept(scope Visitor v) @safe const scope {
466         static import libclang_ast.ast;
467 
468         libclang_ast.ast.accept(cursor, v);
469     }
470 }
471 
472 final class CxxNullPtrLiteralExpr : Expression {
473     import clang.Cursor : Cursor;
474 
475     this(scope Cursor cursor) @safe {
476         super(cursor);
477     }
478 
479     override void accept(scope Visitor v) @safe const scope {
480         static import libclang_ast.ast;
481 
482         libclang_ast.ast.accept(cursor, v);
483     }
484 }
485 
486 final class CxxThisExpr : Expression {
487     import clang.Cursor : Cursor;
488 
489     this(scope Cursor cursor) @safe {
490         super(cursor);
491     }
492 
493     override void accept(scope Visitor v) @safe const scope {
494         static import libclang_ast.ast;
495 
496         libclang_ast.ast.accept(cursor, v);
497     }
498 }
499 
500 final class CxxThrowExpr : Expression {
501     import clang.Cursor : Cursor;
502 
503     this(scope Cursor cursor) @safe {
504         super(cursor);
505     }
506 
507     override void accept(scope Visitor v) @safe const scope {
508         static import libclang_ast.ast;
509 
510         libclang_ast.ast.accept(cursor, v);
511     }
512 }
513 
514 final class CxxNewExpr : Expression {
515     import clang.Cursor : Cursor;
516 
517     this(scope Cursor cursor) @safe {
518         super(cursor);
519     }
520 
521     override void accept(scope Visitor v) @safe const scope {
522         static import libclang_ast.ast;
523 
524         libclang_ast.ast.accept(cursor, v);
525     }
526 }
527 
528 final class CxxDeleteExpr : Expression {
529     import clang.Cursor : Cursor;
530 
531     this(scope Cursor cursor) @safe {
532         super(cursor);
533     }
534 
535     override void accept(scope Visitor v) @safe const scope {
536         static import libclang_ast.ast;
537 
538         libclang_ast.ast.accept(cursor, v);
539     }
540 }
541 
542 final class UnaryExpr : Expression {
543     import clang.Cursor : Cursor;
544 
545     this(scope Cursor cursor) @safe {
546         super(cursor);
547     }
548 
549     override void accept(scope Visitor v) @safe const scope {
550         static import libclang_ast.ast;
551 
552         libclang_ast.ast.accept(cursor, v);
553     }
554 }
555 
556 final class ObjCStringLiteral : Expression {
557     import clang.Cursor : Cursor;
558 
559     this(scope Cursor cursor) @safe {
560         super(cursor);
561     }
562 
563     override void accept(scope Visitor v) @safe const scope {
564         static import libclang_ast.ast;
565 
566         libclang_ast.ast.accept(cursor, v);
567     }
568 }
569 
570 final class ObjCEncodeExpr : Expression {
571     import clang.Cursor : Cursor;
572 
573     this(scope Cursor cursor) @safe {
574         super(cursor);
575     }
576 
577     override void accept(scope Visitor v) @safe const scope {
578         static import libclang_ast.ast;
579 
580         libclang_ast.ast.accept(cursor, v);
581     }
582 }
583 
584 final class ObjCSelectorExpr : Expression {
585     import clang.Cursor : Cursor;
586 
587     this(scope Cursor cursor) @safe {
588         super(cursor);
589     }
590 
591     override void accept(scope Visitor v) @safe const scope {
592         static import libclang_ast.ast;
593 
594         libclang_ast.ast.accept(cursor, v);
595     }
596 }
597 
598 final class ObjCProtocolExpr : Expression {
599     import clang.Cursor : Cursor;
600 
601     this(scope Cursor cursor) @safe {
602         super(cursor);
603     }
604 
605     override void accept(scope Visitor v) @safe const scope {
606         static import libclang_ast.ast;
607 
608         libclang_ast.ast.accept(cursor, v);
609     }
610 }
611 
612 final class ObjCBridgedCastExpr : Expression {
613     import clang.Cursor : Cursor;
614 
615     this(scope Cursor cursor) @safe {
616         super(cursor);
617     }
618 
619     override void accept(scope Visitor v) @safe const scope {
620         static import libclang_ast.ast;
621 
622         libclang_ast.ast.accept(cursor, v);
623     }
624 }
625 
626 final class PackExpansionExpr : Expression {
627     import clang.Cursor : Cursor;
628 
629     this(scope Cursor cursor) @safe {
630         super(cursor);
631     }
632 
633     override void accept(scope Visitor v) @safe const scope {
634         static import libclang_ast.ast;
635 
636         libclang_ast.ast.accept(cursor, v);
637     }
638 }
639 
640 final class SizeOfPackExpr : Expression {
641     import clang.Cursor : Cursor;
642 
643     this(scope Cursor cursor) @safe {
644         super(cursor);
645     }
646 
647     override void accept(scope Visitor v) @safe const scope {
648         static import libclang_ast.ast;
649 
650         libclang_ast.ast.accept(cursor, v);
651     }
652 }
653 
654 final class LambdaExpr : Expression {
655     import clang.Cursor : Cursor;
656 
657     this(scope Cursor cursor) @safe {
658         super(cursor);
659     }
660 
661     override void accept(scope Visitor v) @safe const scope {
662         static import libclang_ast.ast;
663 
664         libclang_ast.ast.accept(cursor, v);
665     }
666 }
667 
668 final class ObjCBoolLiteralExpr : Expression {
669     import clang.Cursor : Cursor;
670 
671     this(scope Cursor cursor) @safe {
672         super(cursor);
673     }
674 
675     override void accept(scope Visitor v) @safe const scope {
676         static import libclang_ast.ast;
677 
678         libclang_ast.ast.accept(cursor, v);
679     }
680 }
681 
682 final class ObjCSelfExpr : Expression {
683     import clang.Cursor : Cursor;
684 
685     this(scope Cursor cursor) @safe {
686         super(cursor);
687     }
688 
689     override void accept(scope Visitor v) @safe const scope {
690         static import libclang_ast.ast;
691 
692         libclang_ast.ast.accept(cursor, v);
693     }
694 }
695 
696 final class OmpArraySectionExpr : Expression {
697     import clang.Cursor : Cursor;
698 
699     this(scope Cursor cursor) @safe {
700         super(cursor);
701     }
702 
703     override void accept(scope Visitor v) @safe const scope {
704         static import libclang_ast.ast;
705 
706         libclang_ast.ast.accept(cursor, v);
707     }
708 }
709 
710 final class ObjCAvailabilityCheckExpr : Expression {
711     import clang.Cursor : Cursor;
712 
713     this(scope Cursor cursor) @safe {
714         super(cursor);
715     }
716 
717     override void accept(scope Visitor v) @safe const scope {
718         static import libclang_ast.ast;
719 
720         libclang_ast.ast.accept(cursor, v);
721     }
722 }