| 1 | // _gen/data_lang/nil8.asdl.h is generated by asdl_main.py
 | 
| 2 | 
 | 
| 3 | #ifndef NIL8_ASDL
 | 
| 4 | #define NIL8_ASDL
 | 
| 5 | 
 | 
| 6 | #include <cstdint>
 | 
| 7 | 
 | 
| 8 | #include "mycpp/runtime.h"
 | 
| 9 | #include "_gen/asdl/hnode.asdl.h"
 | 
| 10 | using hnode_asdl::hnode_t;
 | 
| 11 | 
 | 
| 12 | namespace nil8_asdl {
 | 
| 13 | 
 | 
| 14 | // use struct instead of namespace so 'using' works consistently
 | 
| 15 | #define ASDL_NAMES struct
 | 
| 16 | 
 | 
| 17 | class nvalue_t;
 | 
| 18 | 
 | 
| 19 | ASDL_NAMES nvalue_e {
 | 
| 20 |   enum no_name {
 | 
| 21 |   Null = 1,
 | 
| 22 |   Bool = 2,
 | 
| 23 |   Int = 3,
 | 
| 24 |   Float = 4,
 | 
| 25 |   Str = 5,
 | 
| 26 |   Symbol = 6,
 | 
| 27 |   List = 7,
 | 
| 28 |   Record = 8,
 | 
| 29 |   };
 | 
| 30 | };
 | 
| 31 | 
 | 
| 32 | BigStr* nvalue_str(int tag, bool dot = true);
 | 
| 33 | 
 | 
| 34 | class nvalue_t {
 | 
| 35 |  protected:
 | 
| 36 |   nvalue_t() {
 | 
| 37 |   }
 | 
| 38 |  public:
 | 
| 39 |   int tag() const {
 | 
| 40 |     return ObjHeader::FromObject(this)->type_tag;
 | 
| 41 |   }
 | 
| 42 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 43 |   DISALLOW_COPY_AND_ASSIGN(nvalue_t)
 | 
| 44 | };
 | 
| 45 | 
 | 
| 46 | class nvalue__Null : public nvalue_t {
 | 
| 47 |  public:
 | 
| 48 |   nvalue__Null() {}
 | 
| 49 | 
 | 
| 50 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 51 | 
 | 
| 52 |   static constexpr ObjHeader obj_header() {
 | 
| 53 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::Null), 0);
 | 
| 54 |   }
 | 
| 55 | 
 | 
| 56 | 
 | 
| 57 |   DISALLOW_COPY_AND_ASSIGN(nvalue__Null)
 | 
| 58 | };
 | 
| 59 | 
 | 
| 60 | class nvalue__Bool : public nvalue_t {
 | 
| 61 |  public:
 | 
| 62 |   nvalue__Bool(bool b)
 | 
| 63 |       : b(b) {
 | 
| 64 |   }
 | 
| 65 | 
 | 
| 66 |   static nvalue__Bool* CreateNull(bool alloc_lists = false) { 
 | 
| 67 |     return Alloc<nvalue__Bool>(false);
 | 
| 68 |   }
 | 
| 69 | 
 | 
| 70 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 71 | 
 | 
| 72 |   static constexpr ObjHeader obj_header() {
 | 
| 73 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::Bool), 0);
 | 
| 74 |   }
 | 
| 75 | 
 | 
| 76 |   bool b;
 | 
| 77 | 
 | 
| 78 |   DISALLOW_COPY_AND_ASSIGN(nvalue__Bool)
 | 
| 79 | };
 | 
| 80 | 
 | 
| 81 | class nvalue__Int : public nvalue_t {
 | 
| 82 |  public:
 | 
| 83 |   nvalue__Int(int i)
 | 
| 84 |       : i(i) {
 | 
| 85 |   }
 | 
| 86 | 
 | 
| 87 |   static nvalue__Int* CreateNull(bool alloc_lists = false) { 
 | 
| 88 |     return Alloc<nvalue__Int>(-1);
 | 
| 89 |   }
 | 
| 90 | 
 | 
| 91 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 92 | 
 | 
| 93 |   static constexpr ObjHeader obj_header() {
 | 
| 94 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::Int), 0);
 | 
| 95 |   }
 | 
| 96 | 
 | 
| 97 |   int i;
 | 
| 98 | 
 | 
| 99 |   DISALLOW_COPY_AND_ASSIGN(nvalue__Int)
 | 
| 100 | };
 | 
| 101 | 
 | 
| 102 | class nvalue__Float : public nvalue_t {
 | 
| 103 |  public:
 | 
| 104 |   nvalue__Float(double f)
 | 
| 105 |       : f(f) {
 | 
| 106 |   }
 | 
| 107 | 
 | 
| 108 |   static nvalue__Float* CreateNull(bool alloc_lists = false) { 
 | 
| 109 |     return Alloc<nvalue__Float>(0.0);
 | 
| 110 |   }
 | 
| 111 | 
 | 
| 112 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 113 | 
 | 
| 114 |   static constexpr ObjHeader obj_header() {
 | 
| 115 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::Float), 0);
 | 
| 116 |   }
 | 
| 117 | 
 | 
| 118 |   double f;
 | 
| 119 | 
 | 
| 120 |   DISALLOW_COPY_AND_ASSIGN(nvalue__Float)
 | 
| 121 | };
 | 
| 122 | 
 | 
| 123 | class nvalue__Str : public nvalue_t {
 | 
| 124 |  public:
 | 
| 125 |   nvalue__Str(BigStr* s)
 | 
| 126 |       : s(s) {
 | 
| 127 |   }
 | 
| 128 | 
 | 
| 129 |   static nvalue__Str* CreateNull(bool alloc_lists = false) { 
 | 
| 130 |     return Alloc<nvalue__Str>(kEmptyString);
 | 
| 131 |   }
 | 
| 132 | 
 | 
| 133 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 134 | 
 | 
| 135 |   static constexpr ObjHeader obj_header() {
 | 
| 136 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::Str), 1);
 | 
| 137 |   }
 | 
| 138 | 
 | 
| 139 |   BigStr* s;
 | 
| 140 | 
 | 
| 141 |   DISALLOW_COPY_AND_ASSIGN(nvalue__Str)
 | 
| 142 | };
 | 
| 143 | 
 | 
| 144 | class nvalue__Symbol : public nvalue_t {
 | 
| 145 |  public:
 | 
| 146 |   nvalue__Symbol(BigStr* s)
 | 
| 147 |       : s(s) {
 | 
| 148 |   }
 | 
| 149 | 
 | 
| 150 |   static nvalue__Symbol* CreateNull(bool alloc_lists = false) { 
 | 
| 151 |     return Alloc<nvalue__Symbol>(kEmptyString);
 | 
| 152 |   }
 | 
| 153 | 
 | 
| 154 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 155 | 
 | 
| 156 |   static constexpr ObjHeader obj_header() {
 | 
| 157 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::Symbol), 1);
 | 
| 158 |   }
 | 
| 159 | 
 | 
| 160 |   BigStr* s;
 | 
| 161 | 
 | 
| 162 |   DISALLOW_COPY_AND_ASSIGN(nvalue__Symbol)
 | 
| 163 | };
 | 
| 164 | 
 | 
| 165 | class nvalue__List : public nvalue_t {
 | 
| 166 |  public:
 | 
| 167 |   nvalue__List(List<nvalue_t*>* items)
 | 
| 168 |       : items(items) {
 | 
| 169 |   }
 | 
| 170 | 
 | 
| 171 |   static nvalue__List* CreateNull(bool alloc_lists = false) { 
 | 
| 172 |     return Alloc<nvalue__List>(alloc_lists ? Alloc<List<nvalue_t*>>() :
 | 
| 173 |                                nullptr);
 | 
| 174 |   }
 | 
| 175 | 
 | 
| 176 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 177 | 
 | 
| 178 |   static constexpr ObjHeader obj_header() {
 | 
| 179 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::List), 1);
 | 
| 180 |   }
 | 
| 181 | 
 | 
| 182 |   List<nvalue_t*>* items;
 | 
| 183 | 
 | 
| 184 |   DISALLOW_COPY_AND_ASSIGN(nvalue__List)
 | 
| 185 | };
 | 
| 186 | 
 | 
| 187 | class nvalue__Record : public nvalue_t {
 | 
| 188 |  public:
 | 
| 189 |   nvalue__Record(BigStr* name, List<nvalue_t*>* args, Dict<BigStr*, nvalue_t*>*
 | 
| 190 |                  named)
 | 
| 191 |       : name(name),
 | 
| 192 |         args(args),
 | 
| 193 |         named(named) {
 | 
| 194 |   }
 | 
| 195 | 
 | 
| 196 |   static nvalue__Record* CreateNull(bool alloc_lists = false) { 
 | 
| 197 |     return Alloc<nvalue__Record>(kEmptyString, alloc_lists ?
 | 
| 198 |                                  Alloc<List<nvalue_t*>>() : nullptr, nullptr);
 | 
| 199 |   }
 | 
| 200 | 
 | 
| 201 |   hnode_t* PrettyTree(Dict<int, bool>* seen = nullptr);
 | 
| 202 | 
 | 
| 203 |   static constexpr ObjHeader obj_header() {
 | 
| 204 |     return ObjHeader::AsdlClass(static_cast<uint16_t>(nvalue_e::Record), 3);
 | 
| 205 |   }
 | 
| 206 | 
 | 
| 207 |   BigStr* name;
 | 
| 208 |   List<nvalue_t*>* args;
 | 
| 209 |   Dict<BigStr*, nvalue_t*>* named;
 | 
| 210 | 
 | 
| 211 |   DISALLOW_COPY_AND_ASSIGN(nvalue__Record)
 | 
| 212 | };
 | 
| 213 | 
 | 
| 214 | extern GcGlobal<nvalue__Null> gnvalue__Null;
 | 
| 215 | ASDL_NAMES nvalue {
 | 
| 216 |   static nvalue__Null* Null;
 | 
| 217 |   typedef nvalue__Bool Bool;
 | 
| 218 |   typedef nvalue__Int Int;
 | 
| 219 |   typedef nvalue__Float Float;
 | 
| 220 |   typedef nvalue__Str Str;
 | 
| 221 |   typedef nvalue__Symbol Symbol;
 | 
| 222 |   typedef nvalue__List List;
 | 
| 223 |   typedef nvalue__Record Record;
 | 
| 224 | };
 | 
| 225 | 
 | 
| 226 | 
 | 
| 227 | }  // namespace nil8_asdl
 | 
| 228 | 
 | 
| 229 | #endif  // NIL8_ASDL
 |