1 | // prebuilt/asdl/runtime.mycpp.h: GENERATED by mycpp
|
2 |
|
3 | #ifndef ASDL_RUNTIME_MYCPP_H
|
4 | #define ASDL_RUNTIME_MYCPP_H
|
5 |
|
6 | #include "_gen/asdl/hnode.asdl.h"
|
7 | #include "_gen/display/pretty.asdl.h"
|
8 | #include "cpp/data_lang.h"
|
9 | #include "mycpp/runtime.h"
|
10 |
|
11 | #include "_gen/display/pretty.asdl.h"
|
12 |
|
13 | using pretty_asdl::doc; // ad hoc
|
14 |
|
15 | namespace runtime { // forward declare
|
16 |
|
17 | class TraversalState;
|
18 |
|
19 | } // forward declare namespace runtime
|
20 |
|
21 | namespace format { // forward declare
|
22 |
|
23 | class ColorOutput;
|
24 | class TextOutput;
|
25 | class HtmlOutput;
|
26 | class AnsiOutput;
|
27 | class _PrettyPrinter;
|
28 |
|
29 | } // forward declare namespace format
|
30 |
|
31 | namespace runtime { // declare
|
32 |
|
33 | using hnode_asdl::hnode;
|
34 | extern int NO_SPID;
|
35 | hnode::Record* NewRecord(BigStr* node_type);
|
36 | hnode::Leaf* NewLeaf(BigStr* s, hnode_asdl::color_t e_color);
|
37 | class TraversalState {
|
38 | public:
|
39 | TraversalState();
|
40 | Dict<int, bool>* seen{};
|
41 | Dict<int, int>* ref_count{};
|
42 |
|
43 | static constexpr ObjHeader obj_header() {
|
44 | return ObjHeader::ClassScanned(2, sizeof(TraversalState));
|
45 | }
|
46 |
|
47 | DISALLOW_COPY_AND_ASSIGN(TraversalState)
|
48 | };
|
49 |
|
50 | extern BigStr* TRUE_STR;
|
51 | extern BigStr* FALSE_STR;
|
52 |
|
53 | } // declare namespace runtime
|
54 |
|
55 | namespace format { // declare
|
56 |
|
57 | using hnode_asdl::hnode;
|
58 | format::ColorOutput* DetectConsoleOutput(mylib::Writer* f);
|
59 | class ColorOutput {
|
60 | public:
|
61 | ColorOutput(mylib::Writer* f);
|
62 | virtual format::ColorOutput* NewTempBuffer();
|
63 | virtual void FileHeader();
|
64 | virtual void FileFooter();
|
65 | virtual void PushColor(hnode_asdl::color_t e_color);
|
66 | virtual void PopColor();
|
67 | virtual void write(BigStr* s);
|
68 | void WriteRaw(Tuple2<BigStr*, int>* raw);
|
69 | int NumChars();
|
70 | Tuple2<BigStr*, int> GetRaw();
|
71 | mylib::Writer* f{};
|
72 | int num_chars{};
|
73 |
|
74 | static constexpr uint32_t field_mask() {
|
75 | return maskbit(offsetof(ColorOutput, f));
|
76 | }
|
77 |
|
78 | static constexpr ObjHeader obj_header() {
|
79 | return ObjHeader::ClassFixed(field_mask(), sizeof(ColorOutput));
|
80 | }
|
81 |
|
82 | DISALLOW_COPY_AND_ASSIGN(ColorOutput)
|
83 | };
|
84 |
|
85 | class TextOutput : public ::format::ColorOutput {
|
86 | public:
|
87 | TextOutput(mylib::Writer* f);
|
88 | virtual format::TextOutput* NewTempBuffer();
|
89 | virtual void PushColor(hnode_asdl::color_t e_color);
|
90 | virtual void PopColor();
|
91 |
|
92 | static constexpr uint32_t field_mask() {
|
93 | return ::format::ColorOutput::field_mask();
|
94 | }
|
95 |
|
96 | static constexpr ObjHeader obj_header() {
|
97 | return ObjHeader::ClassFixed(field_mask(), sizeof(TextOutput));
|
98 | }
|
99 |
|
100 | DISALLOW_COPY_AND_ASSIGN(TextOutput)
|
101 | };
|
102 |
|
103 | class HtmlOutput : public ::format::ColorOutput {
|
104 | public:
|
105 | HtmlOutput(mylib::Writer* f);
|
106 | virtual format::HtmlOutput* NewTempBuffer();
|
107 | virtual void FileHeader();
|
108 | virtual void FileFooter();
|
109 | virtual void PushColor(hnode_asdl::color_t e_color);
|
110 | virtual void PopColor();
|
111 | virtual void write(BigStr* s);
|
112 |
|
113 | static constexpr uint32_t field_mask() {
|
114 | return ::format::ColorOutput::field_mask();
|
115 | }
|
116 |
|
117 | static constexpr ObjHeader obj_header() {
|
118 | return ObjHeader::ClassFixed(field_mask(), sizeof(HtmlOutput));
|
119 | }
|
120 |
|
121 | DISALLOW_COPY_AND_ASSIGN(HtmlOutput)
|
122 | };
|
123 |
|
124 | class AnsiOutput : public ::format::ColorOutput {
|
125 | public:
|
126 | AnsiOutput(mylib::Writer* f);
|
127 | virtual format::AnsiOutput* NewTempBuffer();
|
128 | virtual void PushColor(hnode_asdl::color_t e_color);
|
129 | virtual void PopColor();
|
130 |
|
131 | static constexpr uint32_t field_mask() {
|
132 | return ::format::ColorOutput::field_mask();
|
133 | }
|
134 |
|
135 | static constexpr ObjHeader obj_header() {
|
136 | return ObjHeader::ClassFixed(field_mask(), sizeof(AnsiOutput));
|
137 | }
|
138 |
|
139 | DISALLOW_COPY_AND_ASSIGN(AnsiOutput)
|
140 | };
|
141 |
|
142 | extern int INDENT;
|
143 | class _PrettyPrinter {
|
144 | public:
|
145 | _PrettyPrinter(int max_col);
|
146 | bool _PrintWrappedArray(List<hnode_asdl::hnode_t*>* array, int prefix_len, format::ColorOutput* f, int indent);
|
147 | bool _PrintWholeArray(List<hnode_asdl::hnode_t*>* array, int prefix_len, format::ColorOutput* f, int indent);
|
148 | void _PrintRecord(hnode::Record* node, format::ColorOutput* f, int indent);
|
149 | void PrintNode(hnode_asdl::hnode_t* node, format::ColorOutput* f, int indent);
|
150 | int max_col{};
|
151 |
|
152 | static constexpr ObjHeader obj_header() {
|
153 | return ObjHeader::ClassScanned(0, sizeof(_PrettyPrinter));
|
154 | }
|
155 |
|
156 | DISALLOW_COPY_AND_ASSIGN(_PrettyPrinter)
|
157 | };
|
158 |
|
159 | bool _TrySingleLineObj(hnode::Record* node, format::ColorOutput* f, int max_chars);
|
160 | bool _TrySingleLine(hnode_asdl::hnode_t* node, format::ColorOutput* f, int max_chars);
|
161 | void PrintTree(hnode_asdl::hnode_t* node, format::ColorOutput* f);
|
162 | void PrintTree2(hnode_asdl::hnode_t* node, format::ColorOutput* f);
|
163 |
|
164 | } // declare namespace format
|
165 |
|
166 | #endif // ASDL_RUNTIME_MYCPP_H
|