OILS / _gen / yaks / yaks.asdl.h View on Github | oilshell.org

1034 lines, 667 significant
1// _gen/yaks/yaks.asdl.h is generated by asdl_main.py
2
3#ifndef YAKS_ASDL
4#define YAKS_ASDL
5
6#include <cstdint>
7
8#include "mycpp/runtime.h"
9#include "_gen/asdl/hnode.asdl.h"
10using hnode_asdl::hnode_t;
11
12 namespace yaks_asdl {
13
14// use struct instead of namespace so 'using' works consistently
15#define ASDL_NAMES struct
16
17class Token;
18class Bool;
19class Int;
20class Str;
21class MultiStr;
22class kexpr_t;
23class Field_;
24class variant;
25class ktype_t;
26class NameType;
27class stmt_t;
28class Signature;
29class mod_def_t;
30class Module;
31class Program;
32
33enum class op_e {
34 Plus = 1,
35 Minus = 2,
36};
37typedef op_e op_t;
38
39BigStr* op_str(op_e tag, bool dot = true);
40
41ASDL_NAMES kexpr_e {
42 enum no_name {
43 Bool = 65,
44 Int = 66,
45 Str = 67,
46 MultiStr = 68,
47 Unary = 5,
48 Binary = 6,
49 Ternary = 7,
50 Call = 8,
51 };
52};
53
54BigStr* kexpr_str(int tag, bool dot = true);
55
56class kexpr_t {
57 protected:
58 kexpr_t() {
59 }
60 public:
61 int tag() const {
62 return ObjHeader::FromObject(this)->type_tag;
63 }
64 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
65 DISALLOW_COPY_AND_ASSIGN(kexpr_t)
66};
67
68class kexpr__Unary : public kexpr_t {
69 public:
70 kexpr__Unary(Token* op, kexpr_t* child)
71 : op(op),
72 child(child) {
73 }
74
75 static kexpr__Unary* CreateNull(bool alloc_lists = false) {
76 return Alloc<kexpr__Unary>(nullptr, nullptr);
77 }
78
79 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
80
81 static constexpr ObjHeader obj_header() {
82 return ObjHeader::AsdlClass(static_cast<uint16_t>(kexpr_e::Unary), 2);
83 }
84
85 Token* op;
86 kexpr_t* child;
87
88 DISALLOW_COPY_AND_ASSIGN(kexpr__Unary)
89};
90
91class kexpr__Binary : public kexpr_t {
92 public:
93 kexpr__Binary(Token* op, kexpr_t* left, kexpr_t* right)
94 : op(op),
95 left(left),
96 right(right) {
97 }
98
99 static kexpr__Binary* CreateNull(bool alloc_lists = false) {
100 return Alloc<kexpr__Binary>(nullptr, nullptr, nullptr);
101 }
102
103 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
104
105 static constexpr ObjHeader obj_header() {
106 return ObjHeader::AsdlClass(static_cast<uint16_t>(kexpr_e::Binary), 3);
107 }
108
109 Token* op;
110 kexpr_t* left;
111 kexpr_t* right;
112
113 DISALLOW_COPY_AND_ASSIGN(kexpr__Binary)
114};
115
116class kexpr__Ternary : public kexpr_t {
117 public:
118 kexpr__Ternary(Token* op, kexpr_t* left, kexpr_t* cond, kexpr_t* right)
119 : op(op),
120 left(left),
121 cond(cond),
122 right(right) {
123 }
124
125 static kexpr__Ternary* CreateNull(bool alloc_lists = false) {
126 return Alloc<kexpr__Ternary>(nullptr, nullptr, nullptr, nullptr);
127 }
128
129 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
130
131 static constexpr ObjHeader obj_header() {
132 return ObjHeader::AsdlClass(static_cast<uint16_t>(kexpr_e::Ternary), 4);
133 }
134
135 Token* op;
136 kexpr_t* left;
137 kexpr_t* cond;
138 kexpr_t* right;
139
140 DISALLOW_COPY_AND_ASSIGN(kexpr__Ternary)
141};
142
143class kexpr__Call : public kexpr_t {
144 public:
145 kexpr__Call(kexpr_t* f, List<kexpr_t*>* args)
146 : f(f),
147 args(args) {
148 }
149
150 static kexpr__Call* CreateNull(bool alloc_lists = false) {
151 return Alloc<kexpr__Call>(nullptr, alloc_lists ? Alloc<List<kexpr_t*>>() :
152 nullptr);
153 }
154
155 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
156
157 static constexpr ObjHeader obj_header() {
158 return ObjHeader::AsdlClass(static_cast<uint16_t>(kexpr_e::Call), 2);
159 }
160
161 kexpr_t* f;
162 List<kexpr_t*>* args;
163
164 DISALLOW_COPY_AND_ASSIGN(kexpr__Call)
165};
166
167ASDL_NAMES kexpr {
168 typedef kexpr__Unary Unary;
169 typedef kexpr__Binary Binary;
170 typedef kexpr__Ternary Ternary;
171 typedef kexpr__Call Call;
172};
173
174ASDL_NAMES ktype_e {
175 enum no_name {
176 Bool = 1,
177 Int = 2,
178 Str = 3,
179 List = 4,
180 Dict = 5,
181 Class = 6,
182 Data = 7,
183 Enum = 8,
184 };
185};
186
187BigStr* ktype_str(int tag, bool dot = true);
188
189class ktype_t {
190 protected:
191 ktype_t() {
192 }
193 public:
194 int tag() const {
195 return ObjHeader::FromObject(this)->type_tag;
196 }
197 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
198 DISALLOW_COPY_AND_ASSIGN(ktype_t)
199};
200
201class ktype__Bool : public ktype_t {
202 public:
203 ktype__Bool() {}
204
205 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
206
207 static constexpr ObjHeader obj_header() {
208 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::Bool), 0);
209 }
210
211
212 DISALLOW_COPY_AND_ASSIGN(ktype__Bool)
213};
214
215class ktype__Int : public ktype_t {
216 public:
217 ktype__Int() {}
218
219 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
220
221 static constexpr ObjHeader obj_header() {
222 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::Int), 0);
223 }
224
225
226 DISALLOW_COPY_AND_ASSIGN(ktype__Int)
227};
228
229class ktype__Str : public ktype_t {
230 public:
231 ktype__Str() {}
232
233 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
234
235 static constexpr ObjHeader obj_header() {
236 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::Str), 0);
237 }
238
239
240 DISALLOW_COPY_AND_ASSIGN(ktype__Str)
241};
242
243class ktype__List : public ktype_t {
244 public:
245 ktype__List(ktype_t* T)
246 : T(T) {
247 }
248
249 static ktype__List* CreateNull(bool alloc_lists = false) {
250 return Alloc<ktype__List>(nullptr);
251 }
252
253 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
254
255 static constexpr ObjHeader obj_header() {
256 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::List), 1);
257 }
258
259 ktype_t* T;
260
261 DISALLOW_COPY_AND_ASSIGN(ktype__List)
262};
263
264class ktype__Dict : public ktype_t {
265 public:
266 ktype__Dict(ktype_t* K, ktype_t* V)
267 : K(K),
268 V(V) {
269 }
270
271 static ktype__Dict* CreateNull(bool alloc_lists = false) {
272 return Alloc<ktype__Dict>(nullptr, nullptr);
273 }
274
275 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
276
277 static constexpr ObjHeader obj_header() {
278 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::Dict), 2);
279 }
280
281 ktype_t* K;
282 ktype_t* V;
283
284 DISALLOW_COPY_AND_ASSIGN(ktype__Dict)
285};
286
287class ktype__Class : public ktype_t {
288 public:
289 ktype__Class(BigStr* name)
290 : name(name) {
291 }
292
293 static ktype__Class* CreateNull(bool alloc_lists = false) {
294 return Alloc<ktype__Class>(kEmptyString);
295 }
296
297 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
298
299 static constexpr ObjHeader obj_header() {
300 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::Class), 1);
301 }
302
303 BigStr* name;
304
305 DISALLOW_COPY_AND_ASSIGN(ktype__Class)
306};
307
308class ktype__Data : public ktype_t {
309 public:
310 ktype__Data(List<Field_*>* fields)
311 : fields(fields) {
312 }
313
314 static ktype__Data* CreateNull(bool alloc_lists = false) {
315 return Alloc<ktype__Data>(alloc_lists ? Alloc<List<Field_*>>() : nullptr);
316 }
317
318 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
319
320 static constexpr ObjHeader obj_header() {
321 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::Data), 1);
322 }
323
324 List<Field_*>* fields;
325
326 DISALLOW_COPY_AND_ASSIGN(ktype__Data)
327};
328
329class ktype__Enum : public ktype_t {
330 public:
331 ktype__Enum(List<variant*>* variants)
332 : variants(variants) {
333 }
334
335 static ktype__Enum* CreateNull(bool alloc_lists = false) {
336 return Alloc<ktype__Enum>(alloc_lists ? Alloc<List<variant*>>() : nullptr);
337 }
338
339 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
340
341 static constexpr ObjHeader obj_header() {
342 return ObjHeader::AsdlClass(static_cast<uint16_t>(ktype_e::Enum), 1);
343 }
344
345 List<variant*>* variants;
346
347 DISALLOW_COPY_AND_ASSIGN(ktype__Enum)
348};
349
350extern GcGlobal<ktype__Bool> gktype__Bool;
351extern GcGlobal<ktype__Int> gktype__Int;
352extern GcGlobal<ktype__Str> gktype__Str;
353ASDL_NAMES ktype {
354 static ktype__Bool* Bool;
355 static ktype__Int* Int;
356 static ktype__Str* Str;
357 typedef ktype__List List;
358 typedef ktype__Dict Dict;
359 typedef ktype__Class Class;
360 typedef ktype__Data Data;
361 typedef ktype__Enum Enum;
362};
363
364ASDL_NAMES stmt_e {
365 enum no_name {
366 VarDecl = 1,
367 PlaceMutation = 2,
368 If = 3,
369 Switch = 4,
370 For = 5,
371 While = 6,
372 Break = 7,
373 Continue = 8,
374 Return = 9,
375 Try = 10,
376 With = 11,
377 };
378};
379
380BigStr* stmt_str(int tag, bool dot = true);
381
382class stmt_t {
383 protected:
384 stmt_t() {
385 }
386 public:
387 int tag() const {
388 return ObjHeader::FromObject(this)->type_tag;
389 }
390 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
391 DISALLOW_COPY_AND_ASSIGN(stmt_t)
392};
393
394class stmt__VarDecl : public stmt_t {
395 public:
396 stmt__VarDecl(Token* keyword)
397 : keyword(keyword) {
398 }
399
400 static stmt__VarDecl* CreateNull(bool alloc_lists = false) {
401 return Alloc<stmt__VarDecl>(nullptr);
402 }
403
404 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
405
406 static constexpr ObjHeader obj_header() {
407 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::VarDecl), 1);
408 }
409
410 Token* keyword;
411
412 DISALLOW_COPY_AND_ASSIGN(stmt__VarDecl)
413};
414
415class stmt__PlaceMutation : public stmt_t {
416 public:
417 stmt__PlaceMutation(Token* keyword)
418 : keyword(keyword) {
419 }
420
421 static stmt__PlaceMutation* CreateNull(bool alloc_lists = false) {
422 return Alloc<stmt__PlaceMutation>(nullptr);
423 }
424
425 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
426
427 static constexpr ObjHeader obj_header() {
428 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::PlaceMutation),
429 1);
430 }
431
432 Token* keyword;
433
434 DISALLOW_COPY_AND_ASSIGN(stmt__PlaceMutation)
435};
436
437class stmt__If : public stmt_t {
438 public:
439 stmt__If() {}
440
441 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
442
443 static constexpr ObjHeader obj_header() {
444 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::If), 0);
445 }
446
447
448 DISALLOW_COPY_AND_ASSIGN(stmt__If)
449};
450
451class stmt__Switch : public stmt_t {
452 public:
453 stmt__Switch() {}
454
455 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
456
457 static constexpr ObjHeader obj_header() {
458 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::Switch), 0);
459 }
460
461
462 DISALLOW_COPY_AND_ASSIGN(stmt__Switch)
463};
464
465class stmt__For : public stmt_t {
466 public:
467 stmt__For() {}
468
469 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
470
471 static constexpr ObjHeader obj_header() {
472 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::For), 0);
473 }
474
475
476 DISALLOW_COPY_AND_ASSIGN(stmt__For)
477};
478
479class stmt__While : public stmt_t {
480 public:
481 stmt__While() {}
482
483 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
484
485 static constexpr ObjHeader obj_header() {
486 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::While), 0);
487 }
488
489
490 DISALLOW_COPY_AND_ASSIGN(stmt__While)
491};
492
493class stmt__Break : public stmt_t {
494 public:
495 stmt__Break() {}
496
497 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
498
499 static constexpr ObjHeader obj_header() {
500 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::Break), 0);
501 }
502
503
504 DISALLOW_COPY_AND_ASSIGN(stmt__Break)
505};
506
507class stmt__Continue : public stmt_t {
508 public:
509 stmt__Continue() {}
510
511 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
512
513 static constexpr ObjHeader obj_header() {
514 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::Continue), 0);
515 }
516
517
518 DISALLOW_COPY_AND_ASSIGN(stmt__Continue)
519};
520
521class stmt__Return : public stmt_t {
522 public:
523 stmt__Return(kexpr_t* e)
524 : e(e) {
525 }
526
527 static stmt__Return* CreateNull(bool alloc_lists = false) {
528 return Alloc<stmt__Return>(nullptr);
529 }
530
531 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
532
533 static constexpr ObjHeader obj_header() {
534 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::Return), 1);
535 }
536
537 kexpr_t* e;
538
539 DISALLOW_COPY_AND_ASSIGN(stmt__Return)
540};
541
542class stmt__Try : public stmt_t {
543 public:
544 stmt__Try() {}
545
546 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
547
548 static constexpr ObjHeader obj_header() {
549 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::Try), 0);
550 }
551
552
553 DISALLOW_COPY_AND_ASSIGN(stmt__Try)
554};
555
556class stmt__With : public stmt_t {
557 public:
558 stmt__With() {}
559
560 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
561
562 static constexpr ObjHeader obj_header() {
563 return ObjHeader::AsdlClass(static_cast<uint16_t>(stmt_e::With), 0);
564 }
565
566
567 DISALLOW_COPY_AND_ASSIGN(stmt__With)
568};
569
570extern GcGlobal<stmt__If> gstmt__If;
571extern GcGlobal<stmt__Switch> gstmt__Switch;
572extern GcGlobal<stmt__For> gstmt__For;
573extern GcGlobal<stmt__While> gstmt__While;
574extern GcGlobal<stmt__Break> gstmt__Break;
575extern GcGlobal<stmt__Continue> gstmt__Continue;
576extern GcGlobal<stmt__Try> gstmt__Try;
577extern GcGlobal<stmt__With> gstmt__With;
578ASDL_NAMES stmt {
579 typedef stmt__VarDecl VarDecl;
580 typedef stmt__PlaceMutation PlaceMutation;
581 static stmt__If* If;
582 static stmt__Switch* Switch;
583 static stmt__For* For;
584 static stmt__While* While;
585 static stmt__Break* Break;
586 static stmt__Continue* Continue;
587 typedef stmt__Return Return;
588 static stmt__Try* Try;
589 static stmt__With* With;
590};
591
592enum class class_def_e {
593 Constructor = 1,
594 Destructor = 2,
595 Method = 3,
596 Field = 4,
597};
598typedef class_def_e class_def_t;
599
600BigStr* class_def_str(class_def_e tag, bool dot = true);
601
602ASDL_NAMES mod_def_e {
603 enum no_name {
604 Global = 1,
605 Func = 2,
606 Class = 3,
607 Import = 4,
608 Include = 5,
609 Data = 6,
610 Enum = 7,
611 };
612};
613
614BigStr* mod_def_str(int tag, bool dot = true);
615
616class mod_def_t {
617 protected:
618 mod_def_t() {
619 }
620 public:
621 int tag() const {
622 return ObjHeader::FromObject(this)->type_tag;
623 }
624 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
625 DISALLOW_COPY_AND_ASSIGN(mod_def_t)
626};
627
628class mod_def__Global : public mod_def_t {
629 public:
630 mod_def__Global(NameType* name_type)
631 : name_type(name_type) {
632 }
633
634 static mod_def__Global* CreateNull(bool alloc_lists = false) {
635 return Alloc<mod_def__Global>(nullptr);
636 }
637
638 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
639
640 static constexpr ObjHeader obj_header() {
641 return ObjHeader::AsdlClass(static_cast<uint16_t>(mod_def_e::Global), 1);
642 }
643
644 NameType* name_type;
645
646 DISALLOW_COPY_AND_ASSIGN(mod_def__Global)
647};
648
649class mod_def__Func : public mod_def_t {
650 public:
651 mod_def__Func(BigStr* name, Signature* sig, List<stmt_t*>* statements)
652 : name(name),
653 sig(sig),
654 statements(statements) {
655 }
656
657 static mod_def__Func* CreateNull(bool alloc_lists = false) {
658 return Alloc<mod_def__Func>(kEmptyString, nullptr, alloc_lists ?
659 Alloc<List<stmt_t*>>() : nullptr);
660 }
661
662 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
663
664 static constexpr ObjHeader obj_header() {
665 return ObjHeader::AsdlClass(static_cast<uint16_t>(mod_def_e::Func), 3);
666 }
667
668 BigStr* name;
669 Signature* sig;
670 List<stmt_t*>* statements;
671
672 DISALLOW_COPY_AND_ASSIGN(mod_def__Func)
673};
674
675class mod_def__Class : public mod_def_t {
676 public:
677 mod_def__Class(BigStr* name, List<class_def_t>* defs)
678 : name(name),
679 defs(defs) {
680 }
681
682 static mod_def__Class* CreateNull(bool alloc_lists = false) {
683 return Alloc<mod_def__Class>(kEmptyString, alloc_lists ?
684 Alloc<List<class_def_t>>() : nullptr);
685 }
686
687 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
688
689 static constexpr ObjHeader obj_header() {
690 return ObjHeader::AsdlClass(static_cast<uint16_t>(mod_def_e::Class), 2);
691 }
692
693 BigStr* name;
694 List<class_def_t>* defs;
695
696 DISALLOW_COPY_AND_ASSIGN(mod_def__Class)
697};
698
699class mod_def__Import : public mod_def_t {
700 public:
701 mod_def__Import() {}
702
703 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
704
705 static constexpr ObjHeader obj_header() {
706 return ObjHeader::AsdlClass(static_cast<uint16_t>(mod_def_e::Import), 0);
707 }
708
709
710 DISALLOW_COPY_AND_ASSIGN(mod_def__Import)
711};
712
713class mod_def__Include : public mod_def_t {
714 public:
715 mod_def__Include(BigStr* path)
716 : path(path) {
717 }
718
719 static mod_def__Include* CreateNull(bool alloc_lists = false) {
720 return Alloc<mod_def__Include>(kEmptyString);
721 }
722
723 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
724
725 static constexpr ObjHeader obj_header() {
726 return ObjHeader::AsdlClass(static_cast<uint16_t>(mod_def_e::Include), 1);
727 }
728
729 BigStr* path;
730
731 DISALLOW_COPY_AND_ASSIGN(mod_def__Include)
732};
733
734class mod_def__Data : public mod_def_t {
735 public:
736 mod_def__Data() {}
737
738 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
739
740 static constexpr ObjHeader obj_header() {
741 return ObjHeader::AsdlClass(static_cast<uint16_t>(mod_def_e::Data), 0);
742 }
743
744
745 DISALLOW_COPY_AND_ASSIGN(mod_def__Data)
746};
747
748class mod_def__Enum : public mod_def_t {
749 public:
750 mod_def__Enum() {}
751
752 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
753
754 static constexpr ObjHeader obj_header() {
755 return ObjHeader::AsdlClass(static_cast<uint16_t>(mod_def_e::Enum), 0);
756 }
757
758
759 DISALLOW_COPY_AND_ASSIGN(mod_def__Enum)
760};
761
762extern GcGlobal<mod_def__Import> gmod_def__Import;
763extern GcGlobal<mod_def__Data> gmod_def__Data;
764extern GcGlobal<mod_def__Enum> gmod_def__Enum;
765ASDL_NAMES mod_def {
766 typedef mod_def__Global Global;
767 typedef mod_def__Func Func;
768 typedef mod_def__Class Class;
769 static mod_def__Import* Import;
770 typedef mod_def__Include Include;
771 static mod_def__Data* Data;
772 static mod_def__Enum* Enum;
773};
774
775class Token {
776 public:
777 Token(BigStr* path, BigStr* chunk, int start, int length)
778 : path(path),
779 chunk(chunk),
780 start(start),
781 length(length) {
782 }
783
784 static Token* CreateNull(bool alloc_lists = false) {
785 return Alloc<Token>(kEmptyString, kEmptyString, -1, -1);
786 }
787
788 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
789
790 static constexpr ObjHeader obj_header() {
791 return ObjHeader::AsdlClass(64, 2);
792 }
793
794 BigStr* path;
795 BigStr* chunk;
796 int start;
797 int length;
798
799 DISALLOW_COPY_AND_ASSIGN(Token)
800};
801
802class Bool : public kexpr_t {
803 public:
804 Bool(bool b, Token* loc)
805 : loc(loc),
806 b(b) {
807 }
808
809 static Bool* CreateNull(bool alloc_lists = false) {
810 return Alloc<Bool>(false, nullptr);
811 }
812
813 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
814
815 static constexpr ObjHeader obj_header() {
816 return ObjHeader::AsdlClass(65, 1);
817 }
818
819 Token* loc;
820 bool b;
821
822 DISALLOW_COPY_AND_ASSIGN(Bool)
823};
824
825class Int : public kexpr_t {
826 public:
827 Int(int i, Token* loc)
828 : loc(loc),
829 i(i) {
830 }
831
832 static Int* CreateNull(bool alloc_lists = false) {
833 return Alloc<Int>(-1, nullptr);
834 }
835
836 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
837
838 static constexpr ObjHeader obj_header() {
839 return ObjHeader::AsdlClass(66, 1);
840 }
841
842 Token* loc;
843 int i;
844
845 DISALLOW_COPY_AND_ASSIGN(Int)
846};
847
848class Str : public kexpr_t {
849 public:
850 Str(BigStr* s, Token* loc)
851 : s(s),
852 loc(loc) {
853 }
854
855 static Str* CreateNull(bool alloc_lists = false) {
856 return Alloc<Str>(kEmptyString, nullptr);
857 }
858
859 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
860
861 static constexpr ObjHeader obj_header() {
862 return ObjHeader::AsdlClass(67, 2);
863 }
864
865 BigStr* s;
866 Token* loc;
867
868 DISALLOW_COPY_AND_ASSIGN(Str)
869};
870
871class MultiStr : public kexpr_t {
872 public:
873 MultiStr(List<Token*>* lines)
874 : lines(lines) {
875 }
876
877 static MultiStr* CreateNull(bool alloc_lists = false) {
878 return Alloc<MultiStr>(alloc_lists ? Alloc<List<Token*>>() : nullptr);
879 }
880
881 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
882
883 static constexpr ObjHeader obj_header() {
884 return ObjHeader::AsdlClass(68, 1);
885 }
886
887 List<Token*>* lines;
888
889 DISALLOW_COPY_AND_ASSIGN(MultiStr)
890};
891
892class Field_ {
893 public:
894 Field_(BigStr* name, ktype_t* typ)
895 : name(name),
896 typ(typ) {
897 }
898
899 static Field_* CreateNull(bool alloc_lists = false) {
900 return Alloc<Field_>(kEmptyString, nullptr);
901 }
902
903 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
904
905 static constexpr ObjHeader obj_header() {
906 return ObjHeader::AsdlClass(69, 2);
907 }
908
909 BigStr* name;
910 ktype_t* typ;
911
912 DISALLOW_COPY_AND_ASSIGN(Field_)
913};
914
915class variant {
916 public:
917 variant(List<Field_*>* fields)
918 : fields(fields) {
919 }
920
921 static variant* CreateNull(bool alloc_lists = false) {
922 return Alloc<variant>(alloc_lists ? Alloc<List<Field_*>>() : nullptr);
923 }
924
925 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
926
927 static constexpr ObjHeader obj_header() {
928 return ObjHeader::AsdlClass(70, 1);
929 }
930
931 List<Field_*>* fields;
932
933 DISALLOW_COPY_AND_ASSIGN(variant)
934};
935
936class NameType {
937 public:
938 NameType(BigStr* name, ktype_t* typ)
939 : name(name),
940 typ(typ) {
941 }
942
943 static NameType* CreateNull(bool alloc_lists = false) {
944 return Alloc<NameType>(kEmptyString, nullptr);
945 }
946
947 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
948
949 static constexpr ObjHeader obj_header() {
950 return ObjHeader::AsdlClass(71, 2);
951 }
952
953 BigStr* name;
954 ktype_t* typ;
955
956 DISALLOW_COPY_AND_ASSIGN(NameType)
957};
958
959class Signature {
960 public:
961 Signature(List<NameType*>* params, ktype_t* return_type)
962 : params(params),
963 return_type(return_type) {
964 }
965
966 static Signature* CreateNull(bool alloc_lists = false) {
967 return Alloc<Signature>(alloc_lists ? Alloc<List<NameType*>>() : nullptr,
968 nullptr);
969 }
970
971 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
972
973 static constexpr ObjHeader obj_header() {
974 return ObjHeader::AsdlClass(72, 2);
975 }
976
977 List<NameType*>* params;
978 ktype_t* return_type;
979
980 DISALLOW_COPY_AND_ASSIGN(Signature)
981};
982
983class Module {
984 public:
985 Module(BigStr* name, List<mod_def_t*>* defs)
986 : name(name),
987 defs(defs) {
988 }
989
990 static Module* CreateNull(bool alloc_lists = false) {
991 return Alloc<Module>(kEmptyString, alloc_lists ? Alloc<List<mod_def_t*>>()
992 : nullptr);
993 }
994
995 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
996
997 static constexpr ObjHeader obj_header() {
998 return ObjHeader::AsdlClass(73, 2);
999 }
1000
1001 BigStr* name;
1002 List<mod_def_t*>* defs;
1003
1004 DISALLOW_COPY_AND_ASSIGN(Module)
1005};
1006
1007class Program {
1008 public:
1009 Program(BigStr* main_module, List<Module*>* modules)
1010 : main_module(main_module),
1011 modules(modules) {
1012 }
1013
1014 static Program* CreateNull(bool alloc_lists = false) {
1015 return Alloc<Program>(kEmptyString, alloc_lists ? Alloc<List<Module*>>() :
1016 nullptr);
1017 }
1018
1019 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
1020
1021 static constexpr ObjHeader obj_header() {
1022 return ObjHeader::AsdlClass(74, 2);
1023 }
1024
1025 BigStr* main_module;
1026 List<Module*>* modules;
1027
1028 DISALLOW_COPY_AND_ASSIGN(Program)
1029};
1030
1031
1032} // namespace yaks_asdl
1033
1034#endif // YAKS_ASDL