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

263 lines, 164 significant
1// _gen/data_lang/pretty.asdl.h is generated by asdl_main.py
2
3#ifndef PRETTY_ASDL
4#define PRETTY_ASDL
5
6#include <cstdint>
7
8#include "mycpp/runtime.h"
9#include "_gen/asdl/hnode.asdl.h"
10using hnode_asdl::hnode_t;
11
12namespace pretty_asdl {
13
14// use struct instead of namespace so 'using' works consistently
15#define ASDL_NAMES struct
16
17class MeasuredDoc;
18class Measure;
19class doc_t;
20class DocFragment;
21
22ASDL_NAMES doc_e {
23 enum no_name {
24 Break = 1,
25 Text = 2,
26 Indent = 3,
27 Concat = 4,
28 Group = 5,
29 IfFlat = 6,
30 };
31};
32
33BigStr* doc_str(int tag, bool dot = true);
34
35class doc_t {
36 protected:
37 doc_t() {
38 }
39 public:
40 int tag() const {
41 return ObjHeader::FromObject(this)->type_tag;
42 }
43 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
44 DISALLOW_COPY_AND_ASSIGN(doc_t)
45};
46
47class doc__Break : public doc_t {
48 public:
49 doc__Break(BigStr* string)
50 : string(string) {
51 }
52
53 static doc__Break* CreateNull(bool alloc_lists = false) {
54 return Alloc<doc__Break>(kEmptyString);
55 }
56
57 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
58
59 static constexpr ObjHeader obj_header() {
60 return ObjHeader::AsdlClass(static_cast<uint16_t>(doc_e::Break), 1);
61 }
62
63 BigStr* string;
64
65 DISALLOW_COPY_AND_ASSIGN(doc__Break)
66};
67
68class doc__Text : public doc_t {
69 public:
70 doc__Text(BigStr* string)
71 : string(string) {
72 }
73
74 static doc__Text* CreateNull(bool alloc_lists = false) {
75 return Alloc<doc__Text>(kEmptyString);
76 }
77
78 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
79
80 static constexpr ObjHeader obj_header() {
81 return ObjHeader::AsdlClass(static_cast<uint16_t>(doc_e::Text), 1);
82 }
83
84 BigStr* string;
85
86 DISALLOW_COPY_AND_ASSIGN(doc__Text)
87};
88
89class doc__Indent : public doc_t {
90 public:
91 doc__Indent(int indent, MeasuredDoc* mdoc)
92 : mdoc(mdoc),
93 indent(indent) {
94 }
95
96 static doc__Indent* CreateNull(bool alloc_lists = false) {
97 return Alloc<doc__Indent>(-1, nullptr);
98 }
99
100 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
101
102 static constexpr ObjHeader obj_header() {
103 return ObjHeader::AsdlClass(static_cast<uint16_t>(doc_e::Indent), 1);
104 }
105
106 MeasuredDoc* mdoc;
107 int indent;
108
109 DISALLOW_COPY_AND_ASSIGN(doc__Indent)
110};
111
112class doc__Concat : public doc_t {
113 public:
114 doc__Concat(List<MeasuredDoc*>* mdocs)
115 : mdocs(mdocs) {
116 }
117
118 static doc__Concat* CreateNull(bool alloc_lists = false) {
119 return Alloc<doc__Concat>(alloc_lists ? Alloc<List<MeasuredDoc*>>() :
120 nullptr);
121 }
122
123 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
124
125 static constexpr ObjHeader obj_header() {
126 return ObjHeader::AsdlClass(static_cast<uint16_t>(doc_e::Concat), 1);
127 }
128
129 List<MeasuredDoc*>* mdocs;
130
131 DISALLOW_COPY_AND_ASSIGN(doc__Concat)
132};
133
134class doc__Group : public doc_t {
135 public:
136 doc__Group(MeasuredDoc* mdoc)
137 : mdoc(mdoc) {
138 }
139
140 static doc__Group* CreateNull(bool alloc_lists = false) {
141 return Alloc<doc__Group>(nullptr);
142 }
143
144 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
145
146 static constexpr ObjHeader obj_header() {
147 return ObjHeader::AsdlClass(static_cast<uint16_t>(doc_e::Group), 1);
148 }
149
150 MeasuredDoc* mdoc;
151
152 DISALLOW_COPY_AND_ASSIGN(doc__Group)
153};
154
155class doc__IfFlat : public doc_t {
156 public:
157 doc__IfFlat(MeasuredDoc* flat_mdoc, MeasuredDoc* nonflat_mdoc)
158 : flat_mdoc(flat_mdoc),
159 nonflat_mdoc(nonflat_mdoc) {
160 }
161
162 static doc__IfFlat* CreateNull(bool alloc_lists = false) {
163 return Alloc<doc__IfFlat>(nullptr, nullptr);
164 }
165
166 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
167
168 static constexpr ObjHeader obj_header() {
169 return ObjHeader::AsdlClass(static_cast<uint16_t>(doc_e::IfFlat), 2);
170 }
171
172 MeasuredDoc* flat_mdoc;
173 MeasuredDoc* nonflat_mdoc;
174
175 DISALLOW_COPY_AND_ASSIGN(doc__IfFlat)
176};
177
178ASDL_NAMES doc {
179 typedef doc__Break Break;
180 typedef doc__Text Text;
181 typedef doc__Indent Indent;
182 typedef doc__Concat Concat;
183 typedef doc__Group Group;
184 typedef doc__IfFlat IfFlat;
185};
186
187class MeasuredDoc {
188 public:
189 MeasuredDoc(doc_t* doc, Measure* measure)
190 : doc(doc),
191 measure(measure) {
192 }
193
194 static MeasuredDoc* CreateNull(bool alloc_lists = false) {
195 return Alloc<MeasuredDoc>(nullptr, nullptr);
196 }
197
198 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
199
200 static constexpr ObjHeader obj_header() {
201 return ObjHeader::AsdlClass(64, 2);
202 }
203
204 doc_t* doc;
205 Measure* measure;
206
207 DISALLOW_COPY_AND_ASSIGN(MeasuredDoc)
208};
209
210class Measure {
211 public:
212 Measure(int flat, int nonflat)
213 : flat(flat),
214 nonflat(nonflat) {
215 }
216
217 static Measure* CreateNull(bool alloc_lists = false) {
218 return Alloc<Measure>(-1, -1);
219 }
220
221 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
222
223 static constexpr ObjHeader obj_header() {
224 return ObjHeader::AsdlClass(65, 0);
225 }
226
227 int flat;
228 int nonflat;
229
230 DISALLOW_COPY_AND_ASSIGN(Measure)
231};
232
233class DocFragment {
234 public:
235 DocFragment(MeasuredDoc* mdoc, int indent, bool is_flat, Measure* measure)
236 : mdoc(mdoc),
237 measure(measure),
238 indent(indent),
239 is_flat(is_flat) {
240 }
241
242 static DocFragment* CreateNull(bool alloc_lists = false) {
243 return Alloc<DocFragment>(nullptr, -1, false, nullptr);
244 }
245
246 hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
247
248 static constexpr ObjHeader obj_header() {
249 return ObjHeader::AsdlClass(66, 2);
250 }
251
252 MeasuredDoc* mdoc;
253 Measure* measure;
254 int indent;
255 bool is_flat;
256
257 DISALLOW_COPY_AND_ASSIGN(DocFragment)
258};
259
260
261} // namespace pretty_asdl
262
263#endif // PRETTY_ASDL