OILS / _gen / asdl / examples / demo_lib.asdl.cc View on Github | oils.pub

168 lines, 106 significant
1// _gen/asdl/examples/demo_lib.asdl.cc is generated by asdl_main.py
2
3#include "_gen/asdl/examples/demo_lib.asdl.h"
4#include <assert.h>
5#include "prebuilt/asdl/runtime.mycpp.h" // from mycpp
6
7// Generated code uses these types
8using hnode_asdl::hnode;
9using hnode_asdl::Field;
10using hnode_asdl::color_e;
11
12namespace demo_lib_asdl {
13
14BigStr* value_str(int tag, bool dot) {
15 char buf[32];
16 const char* v = nullptr;
17 switch (tag) {
18 case value_e::Str:
19 v = "Str"; break;
20 case value_e::Array:
21 v = "Array"; break;
22 default:
23 assert(0);
24 }
25 if (dot) {
26 snprintf(buf, 32, "value.%s", v);
27 return StrFromC(buf);
28 } else {
29 return StrFromC(v);
30 }
31}
32
33value__Str* value::Str = &gvalue__Str.obj;
34
35GcGlobal<value__Str> gvalue__Str =
36 { ObjHeader::Global(value_e::Str) };
37
38hnode_t* value__Str::PrettyTree(bool do_abbrev, Dict<int, bool>* seen) {
39 seen = seen ? seen : Alloc<Dict<int, bool>>();
40 int heap_id = ObjectId(this);
41 if (dict_contains(seen, heap_id)) {
42 return Alloc<hnode::AlreadySeen>(heap_id);
43 }
44 seen->set(heap_id, true);
45
46 hnode::Record* out_node = runtime::NewRecord(value_str(this->tag()));
47 return out_node;
48}
49
50
51hnode_t* value__Array::PrettyTree(bool do_abbrev, Dict<int, bool>* seen) {
52 seen = seen ? seen : Alloc<Dict<int, bool>>();
53 int heap_id = ObjectId(this);
54 if (dict_contains(seen, heap_id)) {
55 return Alloc<hnode::AlreadySeen>(heap_id);
56 }
57 seen->set(heap_id, true);
58
59 hnode::Record* out_node = runtime::NewRecord(value_str(this->tag()));
60 List<Field*>* L = out_node->fields;
61
62 hnode_t* x0 = ToPretty(this->a);
63 L->append(Alloc<Field>(StrFromC("a"), x0));
64
65 return out_node;
66}
67
68
69hnode_t* value_t::PrettyTree(bool do_abbrev, Dict<int, bool>* seen) {
70 switch (this->tag()) {
71 case value_e::Str: {
72 value__Str* obj = static_cast<value__Str*>(this);
73 return obj->PrettyTree(do_abbrev, seen);
74 }
75 case value_e::Array: {
76 value__Array* obj = static_cast<value__Array*>(this);
77 return obj->PrettyTree(do_abbrev, seen);
78 }
79 default:
80 assert(0);
81 }
82}
83
84hnode_t* t2::PrettyTree(bool do_abbrev, Dict<int, bool>* seen) {
85 seen = seen ? seen : Alloc<Dict<int, bool>>();
86 int heap_id = ObjectId(this);
87 if (dict_contains(seen, heap_id)) {
88 return Alloc<hnode::AlreadySeen>(heap_id);
89 }
90 seen->set(heap_id, true);
91
92 hnode::Record* out_node = runtime::NewRecord(StrFromC("t2"));
93 List<Field*>* L = out_node->fields;
94
95 hnode_t* x0 = ToPretty(this->a);
96 L->append(Alloc<Field>(StrFromC("a"), x0));
97
98 hnode_t* x1 = ToPretty(this->b);
99 L->append(Alloc<Field>(StrFromC("b"), x1));
100
101 return out_node;
102}
103
104
105hnode_t* t3::PrettyTree(bool do_abbrev, Dict<int, bool>* seen) {
106 seen = seen ? seen : Alloc<Dict<int, bool>>();
107 int heap_id = ObjectId(this);
108 if (dict_contains(seen, heap_id)) {
109 return Alloc<hnode::AlreadySeen>(heap_id);
110 }
111 seen->set(heap_id, true);
112
113 hnode::Record* out_node = runtime::NewRecord(StrFromC("t3"));
114 List<Field*>* L = out_node->fields;
115
116 hnode_t* x0 = ToPretty(this->a);
117 L->append(Alloc<Field>(StrFromC("a"), x0));
118
119 hnode_t* x1 = ToPretty(this->b);
120 L->append(Alloc<Field>(StrFromC("b"), x1));
121
122 return out_node;
123}
124
125
126hnode_t* t4::PrettyTree(bool do_abbrev, Dict<int, bool>* seen) {
127 seen = seen ? seen : Alloc<Dict<int, bool>>();
128 int heap_id = ObjectId(this);
129 if (dict_contains(seen, heap_id)) {
130 return Alloc<hnode::AlreadySeen>(heap_id);
131 }
132 seen->set(heap_id, true);
133
134 hnode::Record* out_node = runtime::NewRecord(StrFromC("t4"));
135 List<Field*>* L = out_node->fields;
136
137 hnode_t* x0 = ToPretty(this->a);
138 L->append(Alloc<Field>(StrFromC("a"), x0));
139
140 hnode_t* x1 = ToPretty(this->b);
141 L->append(Alloc<Field>(StrFromC("b"), x1));
142
143 return out_node;
144}
145
146
147hnode_t* LibToken::PrettyTree(bool do_abbrev, Dict<int, bool>* seen) {
148 seen = seen ? seen : Alloc<Dict<int, bool>>();
149 int heap_id = ObjectId(this);
150 if (dict_contains(seen, heap_id)) {
151 return Alloc<hnode::AlreadySeen>(heap_id);
152 }
153 seen->set(heap_id, true);
154
155 hnode::Record* out_node = runtime::NewRecord(StrFromC("LibToken"));
156 List<Field*>* L = out_node->fields;
157
158 hnode_t* x0 = ToPretty(this->s);
159 L->append(Alloc<Field>(StrFromC("s"), x0));
160
161 hnode_t* x1 = ToPretty(this->i);
162 L->append(Alloc<Field>(StrFromC("i"), x1));
163
164 return out_node;
165}
166
167
168} // namespace demo_lib_asdl