ROSE 0.11.145.141
generated.h
1#ifndef Rose_Traits_generated_h
2#define Rose_Traits_generated_h
3namespace Rose {
4namespace Traits {
5namespace generated {
6// Class: AccessModifier
7template <> struct describe_field_t<SgAccessModifier,SgAccessModifier::access_modifier_enum,&SgAccessModifier::p_modifier> {
10 static constexpr size_t position{0};
11 static constexpr char const * const name{"modifier"};
12 static constexpr char const * const typestr{"SgAccessModifier::access_modifier_enum"};
13 static constexpr bool traverse{false};
14 static constexpr auto mbr_ptr{&SgAccessModifier::p_modifier};
15 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16 using bind = Desc<SgAccessModifier, SgAccessModifier::access_modifier_enum SgAccessModifier::*, &SgAccessModifier::p_modifier>;
17};
18template <> struct describe_node_t<SgAccessModifier> {
19 using node = SgAccessModifier;
20 using base = SgModifier;
21 static constexpr char const * const name{"AccessModifier"};
22 static constexpr unsigned long variant{1};
23 static constexpr bool concrete{true};
26};
27template <> struct node_from_variant_t<1> { using type = SgAccessModifier; };
28
29// Class: ActualArgumentExpression
30template <> struct describe_field_t<SgActualArgumentExpression,SgName,&SgActualArgumentExpression::p_argument_name> {
32 using field_type = SgName;
33 static constexpr size_t position{0};
34 static constexpr char const * const name{"argument_name"};
35 static constexpr char const * const typestr{"SgName"};
36 static constexpr bool traverse{false};
37 static constexpr auto mbr_ptr{&SgActualArgumentExpression::p_argument_name};
38 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39 using bind = Desc<SgActualArgumentExpression, SgName SgActualArgumentExpression::*, &SgActualArgumentExpression::p_argument_name>;
40};
41template <> struct describe_field_t<SgActualArgumentExpression,SgExpression*,&SgActualArgumentExpression::p_expression> {
43 using field_type = SgExpression*;
44 static constexpr size_t position{1};
45 static constexpr char const * const name{"expression"};
46 static constexpr char const * const typestr{"SgExpression*"};
47 static constexpr bool traverse{true};
48 static constexpr auto mbr_ptr{&SgActualArgumentExpression::p_expression};
49 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
50 using bind = Desc<SgActualArgumentExpression, SgExpression* SgActualArgumentExpression::*, &SgActualArgumentExpression::p_expression>;
51};
54 using base = SgExpression;
55 static constexpr char const * const name{"ActualArgumentExpression"};
56 static constexpr unsigned long variant{2};
57 static constexpr bool concrete{true};
60};
61template <> struct node_from_variant_t<2> { using type = SgActualArgumentExpression; };
62
63// Class: AbsOp
64template <> struct describe_node_t<SgAbsOp> {
65 using node = SgAbsOp;
66 using base = SgUnaryOp;
67 static constexpr char const * const name{"AbsOp"};
68 static constexpr unsigned long variant{3};
69 static constexpr bool concrete{true};
71 using fields_t = mp::List<>;
72};
73template <> struct node_from_variant_t<3> { using type = SgAbsOp; };
74
75// Class: AdaAccessType
76template <> struct describe_field_t<SgAdaAccessType,SgType*,&SgAdaAccessType::p_base_type> {
77 using parent = SgAdaAccessType;
78 using field_type = SgType*;
79 static constexpr size_t position{0};
80 static constexpr char const * const name{"base_type"};
81 static constexpr char const * const typestr{"SgType*"};
82 static constexpr bool traverse{true};
83 static constexpr auto mbr_ptr{&SgAdaAccessType::p_base_type};
84 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
85 using bind = Desc<SgAdaAccessType, SgType* SgAdaAccessType::*, &SgAdaAccessType::p_base_type>;
86};
87template <> struct describe_field_t<SgAdaAccessType,bool,&SgAdaAccessType::p_is_general_access> {
88 using parent = SgAdaAccessType;
89 using field_type = bool;
90 static constexpr size_t position{1};
91 static constexpr char const * const name{"is_general_access"};
92 static constexpr char const * const typestr{"bool"};
93 static constexpr bool traverse{false};
94 static constexpr auto mbr_ptr{&SgAdaAccessType::p_is_general_access};
95 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
96 using bind = Desc<SgAdaAccessType, bool SgAdaAccessType::*, &SgAdaAccessType::p_is_general_access>;
97};
98template <> struct describe_field_t<SgAdaAccessType,bool,&SgAdaAccessType::p_is_anonymous> {
99 using parent = SgAdaAccessType;
100 using field_type = bool;
101 static constexpr size_t position{2};
102 static constexpr char const * const name{"is_anonymous"};
103 static constexpr char const * const typestr{"bool"};
104 static constexpr bool traverse{false};
105 static constexpr auto mbr_ptr{&SgAdaAccessType::p_is_anonymous};
106 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
107 using bind = Desc<SgAdaAccessType, bool SgAdaAccessType::*, &SgAdaAccessType::p_is_anonymous>;
108};
109template <> struct describe_node_t<SgAdaAccessType> {
110 using node = SgAdaAccessType;
111 using base = SgType;
112 static constexpr char const * const name{"AdaAccessType"};
113 static constexpr unsigned long variant{4};
114 static constexpr bool concrete{true};
115 using subclasses_t = mp::List<>;
117};
118template <> struct node_from_variant_t<4> { using type = SgAdaAccessType; };
119
120// Class: AdaAcceptStmt
121template <> struct describe_field_t<SgAdaAcceptStmt,SgFunctionParameterScope*,&SgAdaAcceptStmt::p_parameterScope> {
122 using parent = SgAdaAcceptStmt;
124 static constexpr size_t position{0};
125 static constexpr char const * const name{"parameterScope"};
126 static constexpr char const * const typestr{"SgFunctionParameterScope*"};
127 static constexpr bool traverse{false};
128 static constexpr auto mbr_ptr{&SgAdaAcceptStmt::p_parameterScope};
129 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
130 using bind = Desc<SgAdaAcceptStmt, SgFunctionParameterScope* SgAdaAcceptStmt::*, &SgAdaAcceptStmt::p_parameterScope>;
131};
132template <> struct describe_field_t<SgAdaAcceptStmt,SgFunctionParameterList*,&SgAdaAcceptStmt::p_parameterList> {
133 using parent = SgAdaAcceptStmt;
135 static constexpr size_t position{1};
136 static constexpr char const * const name{"parameterList"};
137 static constexpr char const * const typestr{"SgFunctionParameterList*"};
138 static constexpr bool traverse{true};
139 static constexpr auto mbr_ptr{&SgAdaAcceptStmt::p_parameterList};
140 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
141 using bind = Desc<SgAdaAcceptStmt, SgFunctionParameterList* SgAdaAcceptStmt::*, &SgAdaAcceptStmt::p_parameterList>;
142};
143template <> struct describe_field_t<SgAdaAcceptStmt,SgExpression*,&SgAdaAcceptStmt::p_entry> {
144 using parent = SgAdaAcceptStmt;
145 using field_type = SgExpression*;
146 static constexpr size_t position{2};
147 static constexpr char const * const name{"entry"};
148 static constexpr char const * const typestr{"SgExpression*"};
149 static constexpr bool traverse{true};
150 static constexpr auto mbr_ptr{&SgAdaAcceptStmt::p_entry};
151 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
152 using bind = Desc<SgAdaAcceptStmt, SgExpression* SgAdaAcceptStmt::*, &SgAdaAcceptStmt::p_entry>;
153};
154template <> struct describe_field_t<SgAdaAcceptStmt,SgExpression*,&SgAdaAcceptStmt::p_index> {
155 using parent = SgAdaAcceptStmt;
156 using field_type = SgExpression*;
157 static constexpr size_t position{3};
158 static constexpr char const * const name{"index"};
159 static constexpr char const * const typestr{"SgExpression*"};
160 static constexpr bool traverse{true};
161 static constexpr auto mbr_ptr{&SgAdaAcceptStmt::p_index};
162 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
163 using bind = Desc<SgAdaAcceptStmt, SgExpression* SgAdaAcceptStmt::*, &SgAdaAcceptStmt::p_index>;
164};
165template <> struct describe_field_t<SgAdaAcceptStmt,SgStatement*,&SgAdaAcceptStmt::p_body> {
166 using parent = SgAdaAcceptStmt;
167 using field_type = SgStatement*;
168 static constexpr size_t position{4};
169 static constexpr char const * const name{"body"};
170 static constexpr char const * const typestr{"SgStatement*"};
171 static constexpr bool traverse{true};
172 static constexpr auto mbr_ptr{&SgAdaAcceptStmt::p_body};
173 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
174 using bind = Desc<SgAdaAcceptStmt, SgStatement* SgAdaAcceptStmt::*, &SgAdaAcceptStmt::p_body>;
175};
185template <> struct node_from_variant_t<5> { using type = SgAdaAcceptStmt; };
186
187// Class: AdaDelayStmt
188template <> struct describe_field_t<SgAdaDelayStmt,SgExpression*,&SgAdaDelayStmt::p_time> {
189 using parent = SgAdaDelayStmt;
190 using field_type = SgExpression*;
191 static constexpr size_t position{0};
192 static constexpr char const * const name{"time"};
193 static constexpr char const * const typestr{"SgExpression*"};
194 static constexpr bool traverse{true};
195 static constexpr auto mbr_ptr{&SgAdaDelayStmt::p_time};
196 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
197 using bind = Desc<SgAdaDelayStmt, SgExpression* SgAdaDelayStmt::*, &SgAdaDelayStmt::p_time>;
198};
199template <> struct describe_field_t<SgAdaDelayStmt,bool,&SgAdaDelayStmt::p_isRelative> {
200 using parent = SgAdaDelayStmt;
201 using field_type = bool;
202 static constexpr size_t position{1};
203 static constexpr char const * const name{"isRelative"};
204 static constexpr char const * const typestr{"bool"};
205 static constexpr bool traverse{false};
206 static constexpr auto mbr_ptr{&SgAdaDelayStmt::p_isRelative};
207 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
208 using bind = Desc<SgAdaDelayStmt, bool SgAdaDelayStmt::*, &SgAdaDelayStmt::p_isRelative>;
209};
210template <> struct describe_node_t<SgAdaDelayStmt> {
211 using node = SgAdaDelayStmt;
212 using base = SgStatement;
213 static constexpr char const * const name{"AdaDelayStmt"};
214 static constexpr unsigned long variant{6};
215 static constexpr bool concrete{true};
216 using subclasses_t = mp::List<>;
218};
219template <> struct node_from_variant_t<6> { using type = SgAdaDelayStmt; };
220
221// Class: AdaEntryDecl
222template <> struct describe_field_t<SgAdaEntryDecl,SgInitializedName*,&SgAdaEntryDecl::p_entryIndex> {
223 using parent = SgAdaEntryDecl;
225 static constexpr size_t position{0};
226 static constexpr char const * const name{"entryIndex"};
227 static constexpr char const * const typestr{"SgInitializedName*"};
228 static constexpr bool traverse{true};
229 static constexpr auto mbr_ptr{&SgAdaEntryDecl::p_entryIndex};
230 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
231 using bind = Desc<SgAdaEntryDecl, SgInitializedName* SgAdaEntryDecl::*, &SgAdaEntryDecl::p_entryIndex>;
232};
233template <> struct describe_field_t<SgAdaEntryDecl,SgExpression*,&SgAdaEntryDecl::p_entryBarrier> {
234 using parent = SgAdaEntryDecl;
235 using field_type = SgExpression*;
236 static constexpr size_t position{1};
237 static constexpr char const * const name{"entryBarrier"};
238 static constexpr char const * const typestr{"SgExpression*"};
239 static constexpr bool traverse{true};
240 static constexpr auto mbr_ptr{&SgAdaEntryDecl::p_entryBarrier};
241 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
242 using bind = Desc<SgAdaEntryDecl, SgExpression* SgAdaEntryDecl::*, &SgAdaEntryDecl::p_entryBarrier>;
243};
244template <> struct describe_node_t<SgAdaEntryDecl> {
245 using node = SgAdaEntryDecl;
247 static constexpr char const * const name{"AdaEntryDecl"};
248 static constexpr unsigned long variant{7};
249 static constexpr bool concrete{true};
250 using subclasses_t = mp::List<>;
252};
253template <> struct node_from_variant_t<7> { using type = SgAdaEntryDecl; };
254
255// Class: AdaExitStmt
256template <> struct describe_field_t<SgAdaExitStmt,SgStatement*,&SgAdaExitStmt::p_loop> {
257 using parent = SgAdaExitStmt;
258 using field_type = SgStatement*;
259 static constexpr size_t position{0};
260 static constexpr char const * const name{"loop"};
261 static constexpr char const * const typestr{"SgStatement*"};
262 static constexpr bool traverse{false};
263 static constexpr auto mbr_ptr{&SgAdaExitStmt::p_loop};
264 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
265 using bind = Desc<SgAdaExitStmt, SgStatement* SgAdaExitStmt::*, &SgAdaExitStmt::p_loop>;
266};
267template <> struct describe_field_t<SgAdaExitStmt,SgExpression*,&SgAdaExitStmt::p_condition> {
268 using parent = SgAdaExitStmt;
269 using field_type = SgExpression*;
270 static constexpr size_t position{1};
271 static constexpr char const * const name{"condition"};
272 static constexpr char const * const typestr{"SgExpression*"};
273 static constexpr bool traverse{true};
274 static constexpr auto mbr_ptr{&SgAdaExitStmt::p_condition};
275 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
276 using bind = Desc<SgAdaExitStmt, SgExpression* SgAdaExitStmt::*, &SgAdaExitStmt::p_condition>;
277};
278template <> struct describe_field_t<SgAdaExitStmt,bool,&SgAdaExitStmt::p_explicitLoopName> {
279 using parent = SgAdaExitStmt;
280 using field_type = bool;
281 static constexpr size_t position{2};
282 static constexpr char const * const name{"explicitLoopName"};
283 static constexpr char const * const typestr{"bool"};
284 static constexpr bool traverse{false};
285 static constexpr auto mbr_ptr{&SgAdaExitStmt::p_explicitLoopName};
286 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
287 using bind = Desc<SgAdaExitStmt, bool SgAdaExitStmt::*, &SgAdaExitStmt::p_explicitLoopName>;
288};
289template <> struct describe_node_t<SgAdaExitStmt> {
290 using node = SgAdaExitStmt;
291 using base = SgStatement;
292 static constexpr char const * const name{"AdaExitStmt"};
293 static constexpr unsigned long variant{8};
294 static constexpr bool concrete{true};
295 using subclasses_t = mp::List<>;
297};
298template <> struct node_from_variant_t<8> { using type = SgAdaExitStmt; };
299
300// Class: AdaDiscreteType
302 using node = SgAdaDiscreteType;
303 using base = SgType;
304 static constexpr char const * const name{"AdaDiscreteType"};
305 static constexpr unsigned long variant{9};
306 static constexpr bool concrete{true};
307 using subclasses_t = mp::List<>;
308 using fields_t = mp::List<>;
309};
310template <> struct node_from_variant_t<9> { using type = SgAdaDiscreteType; };
311
312// Class: AdaFloatVal
313template <> struct describe_field_t<SgAdaFloatVal,std::string,&SgAdaFloatVal::p_valueString> {
314 using parent = SgAdaFloatVal;
315 using field_type = std::string;
316 static constexpr size_t position{0};
317 static constexpr char const * const name{"valueString"};
318 static constexpr char const * const typestr{"std::string"};
319 static constexpr bool traverse{false};
320 static constexpr auto mbr_ptr{&SgAdaFloatVal::p_valueString};
321 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
322 using bind = Desc<SgAdaFloatVal, std::string SgAdaFloatVal::*, &SgAdaFloatVal::p_valueString>;
323};
324template <> struct describe_node_t<SgAdaFloatVal> {
325 using node = SgAdaFloatVal;
326 using base = SgValueExp;
327 static constexpr char const * const name{"AdaFloatVal"};
328 static constexpr unsigned long variant{10};
329 static constexpr bool concrete{true};
330 using subclasses_t = mp::List<>;
332};
333template <> struct node_from_variant_t<10> { using type = SgAdaFloatVal; };
334
335// Class: AdaLoopStmt
336template <> struct describe_field_t<SgAdaLoopStmt,SgBasicBlock*,&SgAdaLoopStmt::p_body> {
337 using parent = SgAdaLoopStmt;
338 using field_type = SgBasicBlock*;
339 static constexpr size_t position{0};
340 static constexpr char const * const name{"body"};
341 static constexpr char const * const typestr{"SgBasicBlock*"};
342 static constexpr bool traverse{true};
343 static constexpr auto mbr_ptr{&SgAdaLoopStmt::p_body};
344 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
345 using bind = Desc<SgAdaLoopStmt, SgBasicBlock* SgAdaLoopStmt::*, &SgAdaLoopStmt::p_body>;
346};
347template <> struct describe_field_t<SgAdaLoopStmt,std::string,&SgAdaLoopStmt::p_string_label> {
348 using parent = SgAdaLoopStmt;
349 using field_type = std::string;
350 static constexpr size_t position{1};
351 static constexpr char const * const name{"string_label"};
352 static constexpr char const * const typestr{"std::string"};
353 static constexpr bool traverse{false};
354 static constexpr auto mbr_ptr{&SgAdaLoopStmt::p_string_label};
355 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
356 using bind = Desc<SgAdaLoopStmt, std::string SgAdaLoopStmt::*, &SgAdaLoopStmt::p_string_label>;
357};
358template <> struct describe_node_t<SgAdaLoopStmt> {
359 using node = SgAdaLoopStmt;
360 using base = SgStatement;
361 static constexpr char const * const name{"AdaLoopStmt"};
362 static constexpr unsigned long variant{11};
363 static constexpr bool concrete{true};
364 using subclasses_t = mp::List<>;
366};
367template <> struct node_from_variant_t<11> { using type = SgAdaLoopStmt; };
368
369// Class: AdaPackageBody
370template <> struct describe_field_t<SgAdaPackageBody,SgStatementPtrList,&SgAdaPackageBody::p_statements> {
371 using parent = SgAdaPackageBody;
372 using field_type = SgStatementPtrList;
373 static constexpr size_t position{0};
374 static constexpr char const * const name{"statements"};
375 static constexpr char const * const typestr{"SgStatementPtrList"};
376 static constexpr bool traverse{true};
377 static constexpr auto mbr_ptr{&SgAdaPackageBody::p_statements};
378 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
379 using bind = Desc<SgAdaPackageBody, SgStatementPtrList SgAdaPackageBody::*, &SgAdaPackageBody::p_statements>;
380};
382 using node = SgAdaPackageBody;
383 using base = SgScopeStatement;
384 static constexpr char const * const name{"AdaPackageBody"};
385 static constexpr unsigned long variant{12};
386 static constexpr bool concrete{true};
387 using subclasses_t = mp::List<>;
389};
390template <> struct node_from_variant_t<12> { using type = SgAdaPackageBody; };
391
392// Class: AdaPackageBodyDecl
393template <> struct describe_field_t<SgAdaPackageBodyDecl,SgName,&SgAdaPackageBodyDecl::p_name> {
395 using field_type = SgName;
396 static constexpr size_t position{0};
397 static constexpr char const * const name{"name"};
398 static constexpr char const * const typestr{"SgName"};
399 static constexpr bool traverse{false};
400 static constexpr auto mbr_ptr{&SgAdaPackageBodyDecl::p_name};
401 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
402 using bind = Desc<SgAdaPackageBodyDecl, SgName SgAdaPackageBodyDecl::*, &SgAdaPackageBodyDecl::p_name>;
403};
404template <> struct describe_field_t<SgAdaPackageBodyDecl,SgAdaPackageBody*,&SgAdaPackageBodyDecl::p_definition> {
407 static constexpr size_t position{1};
408 static constexpr char const * const name{"definition"};
409 static constexpr char const * const typestr{"SgAdaPackageBody*"};
410 static constexpr bool traverse{true};
411 static constexpr auto mbr_ptr{&SgAdaPackageBodyDecl::p_definition};
412 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
413 using bind = Desc<SgAdaPackageBodyDecl, SgAdaPackageBody* SgAdaPackageBodyDecl::*, &SgAdaPackageBodyDecl::p_definition>;
414};
415template <> struct describe_field_t<SgAdaPackageBodyDecl,SgScopeStatement*,&SgAdaPackageBodyDecl::p_scope> {
418 static constexpr size_t position{2};
419 static constexpr char const * const name{"scope"};
420 static constexpr char const * const typestr{"SgScopeStatement*"};
421 static constexpr bool traverse{false};
422 static constexpr auto mbr_ptr{&SgAdaPackageBodyDecl::p_scope};
423 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
424 using bind = Desc<SgAdaPackageBodyDecl, SgScopeStatement* SgAdaPackageBodyDecl::*, &SgAdaPackageBodyDecl::p_scope>;
425};
426template <> struct describe_field_t<SgAdaPackageBodyDecl,SgAdaPackageSpecDecl*,&SgAdaPackageBodyDecl::p_spec> {
429 static constexpr size_t position{3};
430 static constexpr char const * const name{"spec"};
431 static constexpr char const * const typestr{"SgAdaPackageSpecDecl*"};
432 static constexpr bool traverse{false};
433 static constexpr auto mbr_ptr{&SgAdaPackageBodyDecl::p_spec};
434 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
435 using bind = Desc<SgAdaPackageBodyDecl, SgAdaPackageSpecDecl* SgAdaPackageBodyDecl::*, &SgAdaPackageBodyDecl::p_spec>;
436};
446template <> struct node_from_variant_t<13> { using type = SgAdaPackageBodyDecl; };
447
448// Class: AdaPackageSpec
449template <> struct describe_field_t<SgAdaPackageSpec,bool,&SgAdaPackageSpec::p_hasPrivate> {
450 using parent = SgAdaPackageSpec;
451 using field_type = bool;
452 static constexpr size_t position{0};
453 static constexpr char const * const name{"hasPrivate"};
454 static constexpr char const * const typestr{"bool"};
455 static constexpr bool traverse{false};
456 static constexpr auto mbr_ptr{&SgAdaPackageSpec::p_hasPrivate};
457 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
458 using bind = Desc<SgAdaPackageSpec, bool SgAdaPackageSpec::*, &SgAdaPackageSpec::p_hasPrivate>;
459};
460template <> struct describe_field_t<SgAdaPackageSpec,SgDeclarationStatementPtrList,&SgAdaPackageSpec::p_declarations> {
461 using parent = SgAdaPackageSpec;
462 using field_type = SgDeclarationStatementPtrList;
463 static constexpr size_t position{1};
464 static constexpr char const * const name{"declarations"};
465 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
466 static constexpr bool traverse{true};
467 static constexpr auto mbr_ptr{&SgAdaPackageSpec::p_declarations};
468 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
469 using bind = Desc<SgAdaPackageSpec, SgDeclarationStatementPtrList SgAdaPackageSpec::*, &SgAdaPackageSpec::p_declarations>;
470};
472 using node = SgAdaPackageSpec;
473 using base = SgScopeStatement;
474 static constexpr char const * const name{"AdaPackageSpec"};
475 static constexpr unsigned long variant{14};
476 static constexpr bool concrete{true};
477 using subclasses_t = mp::List<>;
479};
480template <> struct node_from_variant_t<14> { using type = SgAdaPackageSpec; };
481
482// Class: AdaPackageSpecDecl
483template <> struct describe_field_t<SgAdaPackageSpecDecl,SgName,&SgAdaPackageSpecDecl::p_name> {
485 using field_type = SgName;
486 static constexpr size_t position{0};
487 static constexpr char const * const name{"name"};
488 static constexpr char const * const typestr{"SgName"};
489 static constexpr bool traverse{false};
490 static constexpr auto mbr_ptr{&SgAdaPackageSpecDecl::p_name};
491 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
492 using bind = Desc<SgAdaPackageSpecDecl, SgName SgAdaPackageSpecDecl::*, &SgAdaPackageSpecDecl::p_name>;
493};
494template <> struct describe_field_t<SgAdaPackageSpecDecl,SgAdaPackageSpec*,&SgAdaPackageSpecDecl::p_definition> {
497 static constexpr size_t position{1};
498 static constexpr char const * const name{"definition"};
499 static constexpr char const * const typestr{"SgAdaPackageSpec*"};
500 static constexpr bool traverse{true};
501 static constexpr auto mbr_ptr{&SgAdaPackageSpecDecl::p_definition};
502 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
503 using bind = Desc<SgAdaPackageSpecDecl, SgAdaPackageSpec* SgAdaPackageSpecDecl::*, &SgAdaPackageSpecDecl::p_definition>;
504};
505template <> struct describe_field_t<SgAdaPackageSpecDecl,SgScopeStatement*,&SgAdaPackageSpecDecl::p_scope> {
508 static constexpr size_t position{2};
509 static constexpr char const * const name{"scope"};
510 static constexpr char const * const typestr{"SgScopeStatement*"};
511 static constexpr bool traverse{false};
512 static constexpr auto mbr_ptr{&SgAdaPackageSpecDecl::p_scope};
513 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
514 using bind = Desc<SgAdaPackageSpecDecl, SgScopeStatement* SgAdaPackageSpecDecl::*, &SgAdaPackageSpecDecl::p_scope>;
515};
516template <> struct describe_field_t<SgAdaPackageSpecDecl,SgAdaPackageBodyDecl*,&SgAdaPackageSpecDecl::p_body> {
519 static constexpr size_t position{3};
520 static constexpr char const * const name{"body"};
521 static constexpr char const * const typestr{"SgAdaPackageBodyDecl*"};
522 static constexpr bool traverse{false};
523 static constexpr auto mbr_ptr{&SgAdaPackageSpecDecl::p_body};
524 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
525 using bind = Desc<SgAdaPackageSpecDecl, SgAdaPackageBodyDecl* SgAdaPackageSpecDecl::*, &SgAdaPackageSpecDecl::p_body>;
526};
536template <> struct node_from_variant_t<15> { using type = SgAdaPackageSpecDecl; };
537
538// Class: AdaPackageSymbol
539template <> struct describe_field_t<SgAdaPackageSymbol,SgDeclarationStatement*,&SgAdaPackageSymbol::p_declaration> {
542 static constexpr size_t position{0};
543 static constexpr char const * const name{"declaration"};
544 static constexpr char const * const typestr{"SgDeclarationStatement*"};
545 static constexpr bool traverse{true};
546 static constexpr auto mbr_ptr{&SgAdaPackageSymbol::p_declaration};
547 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
548 using bind = Desc<SgAdaPackageSymbol, SgDeclarationStatement* SgAdaPackageSymbol::*, &SgAdaPackageSymbol::p_declaration>;
549};
551 using node = SgAdaPackageSymbol;
552 using base = SgSymbol;
553 static constexpr char const * const name{"AdaPackageSymbol"};
554 static constexpr unsigned long variant{16};
555 static constexpr bool concrete{true};
556 using subclasses_t = mp::List<>;
558};
559template <> struct node_from_variant_t<16> { using type = SgAdaPackageSymbol; };
560
561// Class: AdaRangeConstraint
562template <> struct describe_field_t<SgAdaRangeConstraint,SgExpression*,&SgAdaRangeConstraint::p_range> {
564 using field_type = SgExpression*;
565 static constexpr size_t position{0};
566 static constexpr char const * const name{"range"};
567 static constexpr char const * const typestr{"SgExpression*"};
568 static constexpr bool traverse{true};
569 static constexpr auto mbr_ptr{&SgAdaRangeConstraint::p_range};
570 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
571 using bind = Desc<SgAdaRangeConstraint, SgExpression* SgAdaRangeConstraint::*, &SgAdaRangeConstraint::p_range>;
572};
576 static constexpr char const * const name{"AdaRangeConstraint"};
577 static constexpr unsigned long variant{17};
578 static constexpr bool concrete{true};
579 using subclasses_t = mp::List<>;
581};
582template <> struct node_from_variant_t<17> { using type = SgAdaRangeConstraint; };
583
584// Class: AdaRenamingDecl
585template <> struct describe_field_t<SgAdaRenamingDecl,SgName,&SgAdaRenamingDecl::p_name> {
587 using field_type = SgName;
588 static constexpr size_t position{0};
589 static constexpr char const * const name{"name"};
590 static constexpr char const * const typestr{"SgName"};
591 static constexpr bool traverse{false};
592 static constexpr auto mbr_ptr{&SgAdaRenamingDecl::p_name};
593 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
594 using bind = Desc<SgAdaRenamingDecl, SgName SgAdaRenamingDecl::*, &SgAdaRenamingDecl::p_name>;
595};
596template <> struct describe_field_t<SgAdaRenamingDecl,SgExpression*,&SgAdaRenamingDecl::p_renamed> {
598 using field_type = SgExpression*;
599 static constexpr size_t position{1};
600 static constexpr char const * const name{"renamed"};
601 static constexpr char const * const typestr{"SgExpression*"};
602 static constexpr bool traverse{true};
603 static constexpr auto mbr_ptr{&SgAdaRenamingDecl::p_renamed};
604 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
605 using bind = Desc<SgAdaRenamingDecl, SgExpression* SgAdaRenamingDecl::*, &SgAdaRenamingDecl::p_renamed>;
606};
607template <> struct describe_field_t<SgAdaRenamingDecl,SgType*,&SgAdaRenamingDecl::p_type> {
609 using field_type = SgType*;
610 static constexpr size_t position{2};
611 static constexpr char const * const name{"type"};
612 static constexpr char const * const typestr{"SgType*"};
613 static constexpr bool traverse{false};
614 static constexpr auto mbr_ptr{&SgAdaRenamingDecl::p_type};
615 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
616 using bind = Desc<SgAdaRenamingDecl, SgType* SgAdaRenamingDecl::*, &SgAdaRenamingDecl::p_type>;
617};
619 using node = SgAdaRenamingDecl;
621 static constexpr char const * const name{"AdaRenamingDecl"};
622 static constexpr unsigned long variant{18};
623 static constexpr bool concrete{true};
624 using subclasses_t = mp::List<>;
626};
627template <> struct node_from_variant_t<18> { using type = SgAdaRenamingDecl; };
628
629// Class: AdaSubtype
630template <> struct describe_field_t<SgAdaSubtype,SgType*,&SgAdaSubtype::p_base_type> {
631 using parent = SgAdaSubtype;
632 using field_type = SgType*;
633 static constexpr size_t position{0};
634 static constexpr char const * const name{"base_type"};
635 static constexpr char const * const typestr{"SgType*"};
636 static constexpr bool traverse{true};
637 static constexpr auto mbr_ptr{&SgAdaSubtype::p_base_type};
638 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
639 using bind = Desc<SgAdaSubtype, SgType* SgAdaSubtype::*, &SgAdaSubtype::p_base_type>;
640};
641template <> struct describe_field_t<SgAdaSubtype,SgAdaTypeConstraint*,&SgAdaSubtype::p_constraint> {
642 using parent = SgAdaSubtype;
644 static constexpr size_t position{1};
645 static constexpr char const * const name{"constraint"};
646 static constexpr char const * const typestr{"SgAdaTypeConstraint*"};
647 static constexpr bool traverse{true};
648 static constexpr auto mbr_ptr{&SgAdaSubtype::p_constraint};
649 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
650 using bind = Desc<SgAdaSubtype, SgAdaTypeConstraint* SgAdaSubtype::*, &SgAdaSubtype::p_constraint>;
651};
652template <> struct describe_field_t<SgAdaSubtype,bool,&SgAdaSubtype::p_fromRootType> {
653 using parent = SgAdaSubtype;
654 using field_type = bool;
655 static constexpr size_t position{2};
656 static constexpr char const * const name{"fromRootType"};
657 static constexpr char const * const typestr{"bool"};
658 static constexpr bool traverse{false};
659 static constexpr auto mbr_ptr{&SgAdaSubtype::p_fromRootType};
660 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
661 using bind = Desc<SgAdaSubtype, bool SgAdaSubtype::*, &SgAdaSubtype::p_fromRootType>;
662};
663template <> struct describe_node_t<SgAdaSubtype> {
664 using node = SgAdaSubtype;
665 using base = SgType;
666 static constexpr char const * const name{"AdaSubtype"};
667 static constexpr unsigned long variant{19};
668 static constexpr bool concrete{true};
669 using subclasses_t = mp::List<>;
671};
672template <> struct node_from_variant_t<19> { using type = SgAdaSubtype; };
673
674// Class: AdaTaskBody
675template <> struct describe_field_t<SgAdaTaskBody,SgAdaTaskSpec*,&SgAdaTaskBody::p_spec> {
676 using parent = SgAdaTaskBody;
677 using field_type = SgAdaTaskSpec*;
678 static constexpr size_t position{0};
679 static constexpr char const * const name{"spec"};
680 static constexpr char const * const typestr{"SgAdaTaskSpec*"};
681 static constexpr bool traverse{false};
682 static constexpr auto mbr_ptr{&SgAdaTaskBody::p_spec};
683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
684 using bind = Desc<SgAdaTaskBody, SgAdaTaskSpec* SgAdaTaskBody::*, &SgAdaTaskBody::p_spec>;
685};
686template <> struct describe_field_t<SgAdaTaskBody,SgStatementPtrList,&SgAdaTaskBody::p_statements> {
687 using parent = SgAdaTaskBody;
688 using field_type = SgStatementPtrList;
689 static constexpr size_t position{1};
690 static constexpr char const * const name{"statements"};
691 static constexpr char const * const typestr{"SgStatementPtrList"};
692 static constexpr bool traverse{true};
693 static constexpr auto mbr_ptr{&SgAdaTaskBody::p_statements};
694 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
695 using bind = Desc<SgAdaTaskBody, SgStatementPtrList SgAdaTaskBody::*, &SgAdaTaskBody::p_statements>;
696};
697template <> struct describe_node_t<SgAdaTaskBody> {
698 using node = SgAdaTaskBody;
699 using base = SgScopeStatement;
700 static constexpr char const * const name{"AdaTaskBody"};
701 static constexpr unsigned long variant{20};
702 static constexpr bool concrete{true};
703 using subclasses_t = mp::List<>;
705};
706template <> struct node_from_variant_t<20> { using type = SgAdaTaskBody; };
707
708// Class: AdaTaskBodyDecl
709template <> struct describe_field_t<SgAdaTaskBodyDecl,SgName,&SgAdaTaskBodyDecl::p_name> {
711 using field_type = SgName;
712 static constexpr size_t position{0};
713 static constexpr char const * const name{"name"};
714 static constexpr char const * const typestr{"SgName"};
715 static constexpr bool traverse{false};
716 static constexpr auto mbr_ptr{&SgAdaTaskBodyDecl::p_name};
717 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
718 using bind = Desc<SgAdaTaskBodyDecl, SgName SgAdaTaskBodyDecl::*, &SgAdaTaskBodyDecl::p_name>;
719};
720template <> struct describe_field_t<SgAdaTaskBodyDecl,SgDeclarationStatement*,&SgAdaTaskBodyDecl::p_specificationDeclaration> {
723 static constexpr size_t position{1};
724 static constexpr char const * const name{"specificationDeclaration"};
725 static constexpr char const * const typestr{"SgDeclarationStatement*"};
726 static constexpr bool traverse{false};
727 static constexpr auto mbr_ptr{&SgAdaTaskBodyDecl::p_specificationDeclaration};
728 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
729 using bind = Desc<SgAdaTaskBodyDecl, SgDeclarationStatement* SgAdaTaskBodyDecl::*, &SgAdaTaskBodyDecl::p_specificationDeclaration>;
730};
731template <> struct describe_field_t<SgAdaTaskBodyDecl,SgAdaTaskBody*,&SgAdaTaskBodyDecl::p_definition> {
733 using field_type = SgAdaTaskBody*;
734 static constexpr size_t position{2};
735 static constexpr char const * const name{"definition"};
736 static constexpr char const * const typestr{"SgAdaTaskBody*"};
737 static constexpr bool traverse{true};
738 static constexpr auto mbr_ptr{&SgAdaTaskBodyDecl::p_definition};
739 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
740 using bind = Desc<SgAdaTaskBodyDecl, SgAdaTaskBody* SgAdaTaskBodyDecl::*, &SgAdaTaskBodyDecl::p_definition>;
741};
751template <> struct node_from_variant_t<21> { using type = SgAdaTaskBodyDecl; };
752
753// Class: AdaTaskSpec
754template <> struct describe_field_t<SgAdaTaskSpec,SgAdaTaskBody*,&SgAdaTaskSpec::p_body> {
755 using parent = SgAdaTaskSpec;
756 using field_type = SgAdaTaskBody*;
757 static constexpr size_t position{0};
758 static constexpr char const * const name{"body"};
759 static constexpr char const * const typestr{"SgAdaTaskBody*"};
760 static constexpr bool traverse{false};
761 static constexpr auto mbr_ptr{&SgAdaTaskSpec::p_body};
762 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
763 using bind = Desc<SgAdaTaskSpec, SgAdaTaskBody* SgAdaTaskSpec::*, &SgAdaTaskSpec::p_body>;
764};
765template <> struct describe_field_t<SgAdaTaskSpec,SgDeclarationStatementPtrList,&SgAdaTaskSpec::p_declarations> {
766 using parent = SgAdaTaskSpec;
767 using field_type = SgDeclarationStatementPtrList;
768 static constexpr size_t position{1};
769 static constexpr char const * const name{"declarations"};
770 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
771 static constexpr bool traverse{true};
772 static constexpr auto mbr_ptr{&SgAdaTaskSpec::p_declarations};
773 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
774 using bind = Desc<SgAdaTaskSpec, SgDeclarationStatementPtrList SgAdaTaskSpec::*, &SgAdaTaskSpec::p_declarations>;
775};
776template <> struct describe_field_t<SgAdaTaskSpec,bool,&SgAdaTaskSpec::p_hasPrivate> {
777 using parent = SgAdaTaskSpec;
778 using field_type = bool;
779 static constexpr size_t position{2};
780 static constexpr char const * const name{"hasPrivate"};
781 static constexpr char const * const typestr{"bool"};
782 static constexpr bool traverse{false};
783 static constexpr auto mbr_ptr{&SgAdaTaskSpec::p_hasPrivate};
784 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
785 using bind = Desc<SgAdaTaskSpec, bool SgAdaTaskSpec::*, &SgAdaTaskSpec::p_hasPrivate>;
786};
787template <> struct describe_node_t<SgAdaTaskSpec> {
788 using node = SgAdaTaskSpec;
789 using base = SgScopeStatement;
790 static constexpr char const * const name{"AdaTaskSpec"};
791 static constexpr unsigned long variant{22};
792 static constexpr bool concrete{true};
793 using subclasses_t = mp::List<>;
795};
796template <> struct node_from_variant_t<22> { using type = SgAdaTaskSpec; };
797
798// Class: AdaTaskSpecDecl
799template <> struct describe_field_t<SgAdaTaskSpecDecl,SgName,&SgAdaTaskSpecDecl::p_name> {
801 using field_type = SgName;
802 static constexpr size_t position{0};
803 static constexpr char const * const name{"name"};
804 static constexpr char const * const typestr{"SgName"};
805 static constexpr bool traverse{false};
806 static constexpr auto mbr_ptr{&SgAdaTaskSpecDecl::p_name};
807 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
808 using bind = Desc<SgAdaTaskSpecDecl, SgName SgAdaTaskSpecDecl::*, &SgAdaTaskSpecDecl::p_name>;
809};
810template <> struct describe_field_t<SgAdaTaskSpecDecl,SgAdaTaskSpec*,&SgAdaTaskSpecDecl::p_definition> {
812 using field_type = SgAdaTaskSpec*;
813 static constexpr size_t position{1};
814 static constexpr char const * const name{"definition"};
815 static constexpr char const * const typestr{"SgAdaTaskSpec*"};
816 static constexpr bool traverse{true};
817 static constexpr auto mbr_ptr{&SgAdaTaskSpecDecl::p_definition};
818 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
819 using bind = Desc<SgAdaTaskSpecDecl, SgAdaTaskSpec* SgAdaTaskSpecDecl::*, &SgAdaTaskSpecDecl::p_definition>;
820};
821template <> struct describe_field_t<SgAdaTaskSpecDecl,SgAdaTaskType*,&SgAdaTaskSpecDecl::p_type> {
823 using field_type = SgAdaTaskType*;
824 static constexpr size_t position{2};
825 static constexpr char const * const name{"type"};
826 static constexpr char const * const typestr{"SgAdaTaskType*"};
827 static constexpr bool traverse{false};
828 static constexpr auto mbr_ptr{&SgAdaTaskSpecDecl::p_type};
829 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
830 using bind = Desc<SgAdaTaskSpecDecl, SgAdaTaskType* SgAdaTaskSpecDecl::*, &SgAdaTaskSpecDecl::p_type>;
831};
833 using node = SgAdaTaskSpecDecl;
835 static constexpr char const * const name{"AdaTaskSpecDecl"};
836 static constexpr unsigned long variant{23};
837 static constexpr bool concrete{true};
838 using subclasses_t = mp::List<>;
840};
841template <> struct node_from_variant_t<23> { using type = SgAdaTaskSpecDecl; };
842
843// Class: AdaTaskSymbol
844template <> struct describe_field_t<SgAdaTaskSymbol,SgDeclarationStatement*,&SgAdaTaskSymbol::p_declaration> {
845 using parent = SgAdaTaskSymbol;
847 static constexpr size_t position{0};
848 static constexpr char const * const name{"declaration"};
849 static constexpr char const * const typestr{"SgDeclarationStatement*"};
850 static constexpr bool traverse{true};
851 static constexpr auto mbr_ptr{&SgAdaTaskSymbol::p_declaration};
852 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
853 using bind = Desc<SgAdaTaskSymbol, SgDeclarationStatement* SgAdaTaskSymbol::*, &SgAdaTaskSymbol::p_declaration>;
854};
855template <> struct describe_node_t<SgAdaTaskSymbol> {
856 using node = SgAdaTaskSymbol;
857 using base = SgSymbol;
858 static constexpr char const * const name{"AdaTaskSymbol"};
859 static constexpr unsigned long variant{24};
860 static constexpr bool concrete{true};
861 using subclasses_t = mp::List<>;
863};
864template <> struct node_from_variant_t<24> { using type = SgAdaTaskSymbol; };
865
866// Class: AdaTaskRefExp
867template <> struct describe_field_t<SgAdaTaskRefExp,SgAdaTaskSymbol*,&SgAdaTaskRefExp::p_symbol> {
868 using parent = SgAdaTaskRefExp;
870 static constexpr size_t position{0};
871 static constexpr char const * const name{"symbol"};
872 static constexpr char const * const typestr{"SgAdaTaskSymbol*"};
873 static constexpr bool traverse{false};
874 static constexpr auto mbr_ptr{&SgAdaTaskRefExp::p_symbol};
875 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
876 using bind = Desc<SgAdaTaskRefExp, SgAdaTaskSymbol* SgAdaTaskRefExp::*, &SgAdaTaskRefExp::p_symbol>;
877};
878template <> struct describe_node_t<SgAdaTaskRefExp> {
879 using node = SgAdaTaskRefExp;
880 using base = SgExpression;
881 static constexpr char const * const name{"AdaTaskRefExp"};
882 static constexpr unsigned long variant{25};
883 static constexpr bool concrete{true};
884 using subclasses_t = mp::List<>;
886};
887template <> struct node_from_variant_t<25> { using type = SgAdaTaskRefExp; };
888
889// Class: AdaTaskType
890template <> struct describe_node_t<SgAdaTaskType> {
891 using node = SgAdaTaskType;
892 using base = SgNamedType;
893 static constexpr char const * const name{"AdaTaskType"};
894 static constexpr unsigned long variant{26};
895 static constexpr bool concrete{true};
896 using subclasses_t = mp::List<>;
897 using fields_t = mp::List<>;
898};
899template <> struct node_from_variant_t<26> { using type = SgAdaTaskType; };
900
901// Class: AdaTaskTypeDecl
902template <> struct describe_field_t<SgAdaTaskTypeDecl,SgName,&SgAdaTaskTypeDecl::p_name> {
904 using field_type = SgName;
905 static constexpr size_t position{0};
906 static constexpr char const * const name{"name"};
907 static constexpr char const * const typestr{"SgName"};
908 static constexpr bool traverse{false};
909 static constexpr auto mbr_ptr{&SgAdaTaskTypeDecl::p_name};
910 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
911 using bind = Desc<SgAdaTaskTypeDecl, SgName SgAdaTaskTypeDecl::*, &SgAdaTaskTypeDecl::p_name>;
912};
913template <> struct describe_field_t<SgAdaTaskTypeDecl,SgAdaTaskSpec*,&SgAdaTaskTypeDecl::p_definition> {
915 using field_type = SgAdaTaskSpec*;
916 static constexpr size_t position{1};
917 static constexpr char const * const name{"definition"};
918 static constexpr char const * const typestr{"SgAdaTaskSpec*"};
919 static constexpr bool traverse{true};
920 static constexpr auto mbr_ptr{&SgAdaTaskTypeDecl::p_definition};
921 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
922 using bind = Desc<SgAdaTaskTypeDecl, SgAdaTaskSpec* SgAdaTaskTypeDecl::*, &SgAdaTaskTypeDecl::p_definition>;
923};
924template <> struct describe_field_t<SgAdaTaskTypeDecl,SgAdaTaskType*,&SgAdaTaskTypeDecl::p_type> {
926 using field_type = SgAdaTaskType*;
927 static constexpr size_t position{2};
928 static constexpr char const * const name{"type"};
929 static constexpr char const * const typestr{"SgAdaTaskType*"};
930 static constexpr bool traverse{false};
931 static constexpr auto mbr_ptr{&SgAdaTaskTypeDecl::p_type};
932 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
933 using bind = Desc<SgAdaTaskTypeDecl, SgAdaTaskType* SgAdaTaskTypeDecl::*, &SgAdaTaskTypeDecl::p_type>;
934};
935template <> struct describe_field_t<SgAdaTaskTypeDecl,SgScopeStatement*,&SgAdaTaskTypeDecl::p_scope> {
938 static constexpr size_t position{3};
939 static constexpr char const * const name{"scope"};
940 static constexpr char const * const typestr{"SgScopeStatement*"};
941 static constexpr bool traverse{false};
942 static constexpr auto mbr_ptr{&SgAdaTaskTypeDecl::p_scope};
943 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
944 using bind = Desc<SgAdaTaskTypeDecl, SgScopeStatement* SgAdaTaskTypeDecl::*, &SgAdaTaskTypeDecl::p_scope>;
945};
955template <> struct node_from_variant_t<27> { using type = SgAdaTaskTypeDecl; };
956
957// Class: AdaTypeConstraint
961 static constexpr char const * const name{"AdaTypeConstraint"};
962 static constexpr unsigned long variant{28};
963 static constexpr bool concrete{false};
965 using fields_t = mp::List<>;
966};
967template <> struct node_from_variant_t<28> { using type = SgAdaTypeConstraint; };
968
969// Class: AddOp
970template <> struct describe_node_t<SgAddOp> {
971 using node = SgAddOp;
972 using base = SgBinaryOp;
973 static constexpr char const * const name{"AddOp"};
974 static constexpr unsigned long variant{29};
975 static constexpr bool concrete{true};
976 using subclasses_t = mp::List<>;
977 using fields_t = mp::List<>;
978};
979template <> struct node_from_variant_t<29> { using type = SgAddOp; };
980
981// Class: AddressOfOp
982template <> struct describe_field_t<SgAddressOfOp,SgExpression*,&SgAddressOfOp::p_originalExpressionTree> {
983 using parent = SgAddressOfOp;
984 using field_type = SgExpression*;
985 static constexpr size_t position{0};
986 static constexpr char const * const name{"originalExpressionTree"};
987 static constexpr char const * const typestr{"SgExpression*"};
988 static constexpr bool traverse{false};
989 static constexpr auto mbr_ptr{&SgAddressOfOp::p_originalExpressionTree};
990 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
991 using bind = Desc<SgAddressOfOp, SgExpression* SgAddressOfOp::*, &SgAddressOfOp::p_originalExpressionTree>;
992};
993template <> struct describe_node_t<SgAddressOfOp> {
994 using node = SgAddressOfOp;
995 using base = SgUnaryOp;
996 static constexpr char const * const name{"AddressOfOp"};
997 static constexpr unsigned long variant{30};
998 static constexpr bool concrete{true};
999 using subclasses_t = mp::List<>;
1001};
1002template <> struct node_from_variant_t<30> { using type = SgAddressOfOp; };
1003
1004// Class: AggregateInitializer
1007 using field_type = SgExprListExp*;
1008 static constexpr size_t position{0};
1009 static constexpr char const * const name{"initializers"};
1010 static constexpr char const * const typestr{"SgExprListExp*"};
1011 static constexpr bool traverse{true};
1012 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_initializers};
1013 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1014 using bind = Desc<SgAggregateInitializer, SgExprListExp* SgAggregateInitializer::*, &SgAggregateInitializer::p_initializers>;
1015};
1016template <> struct describe_field_t<SgAggregateInitializer,SgType*,&SgAggregateInitializer::p_expression_type> {
1018 using field_type = SgType*;
1019 static constexpr size_t position{1};
1020 static constexpr char const * const name{"expression_type"};
1021 static constexpr char const * const typestr{"SgType*"};
1022 static constexpr bool traverse{false};
1023 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_expression_type};
1024 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1025 using bind = Desc<SgAggregateInitializer, SgType* SgAggregateInitializer::*, &SgAggregateInitializer::p_expression_type>;
1026};
1027template <> struct describe_field_t<SgAggregateInitializer,bool,&SgAggregateInitializer::p_need_explicit_braces> {
1029 using field_type = bool;
1030 static constexpr size_t position{2};
1031 static constexpr char const * const name{"need_explicit_braces"};
1032 static constexpr char const * const typestr{"bool"};
1033 static constexpr bool traverse{false};
1034 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_need_explicit_braces};
1035 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1036 using bind = Desc<SgAggregateInitializer, bool SgAggregateInitializer::*, &SgAggregateInitializer::p_need_explicit_braces>;
1037};
1038template <> struct describe_field_t<SgAggregateInitializer,bool,&SgAggregateInitializer::p_uses_compound_literal> {
1040 using field_type = bool;
1041 static constexpr size_t position{3};
1042 static constexpr char const * const name{"uses_compound_literal"};
1043 static constexpr char const * const typestr{"bool"};
1044 static constexpr bool traverse{false};
1045 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_uses_compound_literal};
1046 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1047 using bind = Desc<SgAggregateInitializer, bool SgAggregateInitializer::*, &SgAggregateInitializer::p_uses_compound_literal>;
1048};
1049template <> struct describe_field_t<SgAggregateInitializer,bool,&SgAggregateInitializer::p_requiresGlobalNameQualificationOnType> {
1051 using field_type = bool;
1052 static constexpr size_t position{4};
1053 static constexpr char const * const name{"requiresGlobalNameQualificationOnType"};
1054 static constexpr char const * const typestr{"bool"};
1055 static constexpr bool traverse{false};
1056 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_requiresGlobalNameQualificationOnType};
1057 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1058 using bind = Desc<SgAggregateInitializer, bool SgAggregateInitializer::*, &SgAggregateInitializer::p_requiresGlobalNameQualificationOnType>;
1059};
1060template <> struct describe_field_t<SgAggregateInitializer,int,&SgAggregateInitializer::p_name_qualification_length_for_type> {
1062 using field_type = int;
1063 static constexpr size_t position{5};
1064 static constexpr char const * const name{"name_qualification_length_for_type"};
1065 static constexpr char const * const typestr{"int"};
1066 static constexpr bool traverse{false};
1067 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_name_qualification_length_for_type};
1068 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1069 using bind = Desc<SgAggregateInitializer, int SgAggregateInitializer::*, &SgAggregateInitializer::p_name_qualification_length_for_type>;
1070};
1071template <> struct describe_field_t<SgAggregateInitializer,bool,&SgAggregateInitializer::p_type_elaboration_required_for_type> {
1073 using field_type = bool;
1074 static constexpr size_t position{6};
1075 static constexpr char const * const name{"type_elaboration_required_for_type"};
1076 static constexpr char const * const typestr{"bool"};
1077 static constexpr bool traverse{false};
1078 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_type_elaboration_required_for_type};
1079 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1080 using bind = Desc<SgAggregateInitializer, bool SgAggregateInitializer::*, &SgAggregateInitializer::p_type_elaboration_required_for_type>;
1081};
1082template <> struct describe_field_t<SgAggregateInitializer,bool,&SgAggregateInitializer::p_global_qualification_required_for_type> {
1084 using field_type = bool;
1085 static constexpr size_t position{7};
1086 static constexpr char const * const name{"global_qualification_required_for_type"};
1087 static constexpr char const * const typestr{"bool"};
1088 static constexpr bool traverse{false};
1089 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_global_qualification_required_for_type};
1090 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1091 using bind = Desc<SgAggregateInitializer, bool SgAggregateInitializer::*, &SgAggregateInitializer::p_global_qualification_required_for_type>;
1092};
1093template <> struct describe_field_t<SgAggregateInitializer,SgExpression*,&SgAggregateInitializer::p_originalExpressionTree> {
1095 using field_type = SgExpression*;
1096 static constexpr size_t position{8};
1097 static constexpr char const * const name{"originalExpressionTree"};
1098 static constexpr char const * const typestr{"SgExpression*"};
1099 static constexpr bool traverse{false};
1100 static constexpr auto mbr_ptr{&SgAggregateInitializer::p_originalExpressionTree};
1101 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1102 using bind = Desc<SgAggregateInitializer, SgExpression* SgAggregateInitializer::*, &SgAggregateInitializer::p_originalExpressionTree>;
1103};
1113template <> struct node_from_variant_t<31> { using type = SgAggregateInitializer; };
1114
1115// Class: AliasSymbol
1116template <> struct describe_field_t<SgAliasSymbol,SgSymbol*,&SgAliasSymbol::p_alias> {
1117 using parent = SgAliasSymbol;
1118 using field_type = SgSymbol*;
1119 static constexpr size_t position{0};
1120 static constexpr char const * const name{"alias"};
1121 static constexpr char const * const typestr{"SgSymbol*"};
1122 static constexpr bool traverse{true};
1123 static constexpr auto mbr_ptr{&SgAliasSymbol::p_alias};
1124 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1125 using bind = Desc<SgAliasSymbol, SgSymbol* SgAliasSymbol::*, &SgAliasSymbol::p_alias>;
1126};
1127template <> struct describe_field_t<SgAliasSymbol,bool,&SgAliasSymbol::p_isRenamed> {
1128 using parent = SgAliasSymbol;
1129 using field_type = bool;
1130 static constexpr size_t position{1};
1131 static constexpr char const * const name{"isRenamed"};
1132 static constexpr char const * const typestr{"bool"};
1133 static constexpr bool traverse{false};
1134 static constexpr auto mbr_ptr{&SgAliasSymbol::p_isRenamed};
1135 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1136 using bind = Desc<SgAliasSymbol, bool SgAliasSymbol::*, &SgAliasSymbol::p_isRenamed>;
1137};
1138template <> struct describe_field_t<SgAliasSymbol,SgName,&SgAliasSymbol::p_new_name> {
1139 using parent = SgAliasSymbol;
1140 using field_type = SgName;
1141 static constexpr size_t position{2};
1142 static constexpr char const * const name{"new_name"};
1143 static constexpr char const * const typestr{"SgName"};
1144 static constexpr bool traverse{false};
1145 static constexpr auto mbr_ptr{&SgAliasSymbol::p_new_name};
1146 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1147 using bind = Desc<SgAliasSymbol, SgName SgAliasSymbol::*, &SgAliasSymbol::p_new_name>;
1148};
1149template <> struct describe_field_t<SgAliasSymbol,SgNodePtrList,&SgAliasSymbol::p_causal_nodes> {
1150 using parent = SgAliasSymbol;
1151 using field_type = SgNodePtrList;
1152 static constexpr size_t position{3};
1153 static constexpr char const * const name{"causal_nodes"};
1154 static constexpr char const * const typestr{"SgNodePtrList"};
1155 static constexpr bool traverse{false};
1156 static constexpr auto mbr_ptr{&SgAliasSymbol::p_causal_nodes};
1157 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1158 using bind = Desc<SgAliasSymbol, SgNodePtrList SgAliasSymbol::*, &SgAliasSymbol::p_causal_nodes>;
1159};
1160template <> struct describe_node_t<SgAliasSymbol> {
1161 using node = SgAliasSymbol;
1162 using base = SgSymbol;
1163 static constexpr char const * const name{"AliasSymbol"};
1164 static constexpr unsigned long variant{32};
1165 static constexpr bool concrete{true};
1166 using subclasses_t = mp::List<>;
1168};
1169template <> struct node_from_variant_t<32> { using type = SgAliasSymbol; };
1170
1171// Class: AllocateStatement
1172template <> struct describe_field_t<SgAllocateStatement,SgExprListExp*,&SgAllocateStatement::p_expr_list> {
1174 using field_type = SgExprListExp*;
1175 static constexpr size_t position{0};
1176 static constexpr char const * const name{"expr_list"};
1177 static constexpr char const * const typestr{"SgExprListExp*"};
1178 static constexpr bool traverse{true};
1179 static constexpr auto mbr_ptr{&SgAllocateStatement::p_expr_list};
1180 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1181 using bind = Desc<SgAllocateStatement, SgExprListExp* SgAllocateStatement::*, &SgAllocateStatement::p_expr_list>;
1182};
1183template <> struct describe_field_t<SgAllocateStatement,SgExpression*,&SgAllocateStatement::p_stat_expression> {
1185 using field_type = SgExpression*;
1186 static constexpr size_t position{1};
1187 static constexpr char const * const name{"stat_expression"};
1188 static constexpr char const * const typestr{"SgExpression*"};
1189 static constexpr bool traverse{true};
1190 static constexpr auto mbr_ptr{&SgAllocateStatement::p_stat_expression};
1191 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1192 using bind = Desc<SgAllocateStatement, SgExpression* SgAllocateStatement::*, &SgAllocateStatement::p_stat_expression>;
1193};
1194template <> struct describe_field_t<SgAllocateStatement,SgExpression*,&SgAllocateStatement::p_errmsg_expression> {
1196 using field_type = SgExpression*;
1197 static constexpr size_t position{2};
1198 static constexpr char const * const name{"errmsg_expression"};
1199 static constexpr char const * const typestr{"SgExpression*"};
1200 static constexpr bool traverse{true};
1201 static constexpr auto mbr_ptr{&SgAllocateStatement::p_errmsg_expression};
1202 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1203 using bind = Desc<SgAllocateStatement, SgExpression* SgAllocateStatement::*, &SgAllocateStatement::p_errmsg_expression>;
1204};
1205template <> struct describe_field_t<SgAllocateStatement,SgExpression*,&SgAllocateStatement::p_source_expression> {
1207 using field_type = SgExpression*;
1208 static constexpr size_t position{3};
1209 static constexpr char const * const name{"source_expression"};
1210 static constexpr char const * const typestr{"SgExpression*"};
1211 static constexpr bool traverse{true};
1212 static constexpr auto mbr_ptr{&SgAllocateStatement::p_source_expression};
1213 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1214 using bind = Desc<SgAllocateStatement, SgExpression* SgAllocateStatement::*, &SgAllocateStatement::p_source_expression>;
1215};
1225template <> struct node_from_variant_t<33> { using type = SgAllocateStatement; };
1226
1227// Class: AndAssignOp
1228template <> struct describe_node_t<SgAndAssignOp> {
1229 using node = SgAndAssignOp;
1230 using base = SgCompoundAssignOp;
1231 static constexpr char const * const name{"AndAssignOp"};
1232 static constexpr unsigned long variant{34};
1233 static constexpr bool concrete{true};
1234 using subclasses_t = mp::List<>;
1235 using fields_t = mp::List<>;
1236};
1237template <> struct node_from_variant_t<34> { using type = SgAndAssignOp; };
1238
1239// Class: AndOp
1240template <> struct describe_node_t<SgAndOp> {
1241 using node = SgAndOp;
1242 using base = SgBinaryOp;
1243 static constexpr char const * const name{"AndOp"};
1244 static constexpr unsigned long variant{35};
1245 static constexpr bool concrete{true};
1246 using subclasses_t = mp::List<>;
1247 using fields_t = mp::List<>;
1248};
1249template <> struct node_from_variant_t<35> { using type = SgAndOp; };
1250
1251// Class: ArithmeticIfStatement
1252template <> struct describe_field_t<SgArithmeticIfStatement,SgExpression*,&SgArithmeticIfStatement::p_conditional> {
1254 using field_type = SgExpression*;
1255 static constexpr size_t position{0};
1256 static constexpr char const * const name{"conditional"};
1257 static constexpr char const * const typestr{"SgExpression*"};
1258 static constexpr bool traverse{true};
1259 static constexpr auto mbr_ptr{&SgArithmeticIfStatement::p_conditional};
1260 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1261 using bind = Desc<SgArithmeticIfStatement, SgExpression* SgArithmeticIfStatement::*, &SgArithmeticIfStatement::p_conditional>;
1262};
1263template <> struct describe_field_t<SgArithmeticIfStatement,SgLabelRefExp*,&SgArithmeticIfStatement::p_less_label> {
1265 using field_type = SgLabelRefExp*;
1266 static constexpr size_t position{1};
1267 static constexpr char const * const name{"less_label"};
1268 static constexpr char const * const typestr{"SgLabelRefExp*"};
1269 static constexpr bool traverse{false};
1270 static constexpr auto mbr_ptr{&SgArithmeticIfStatement::p_less_label};
1271 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1272 using bind = Desc<SgArithmeticIfStatement, SgLabelRefExp* SgArithmeticIfStatement::*, &SgArithmeticIfStatement::p_less_label>;
1273};
1274template <> struct describe_field_t<SgArithmeticIfStatement,SgLabelRefExp*,&SgArithmeticIfStatement::p_equal_label> {
1276 using field_type = SgLabelRefExp*;
1277 static constexpr size_t position{2};
1278 static constexpr char const * const name{"equal_label"};
1279 static constexpr char const * const typestr{"SgLabelRefExp*"};
1280 static constexpr bool traverse{false};
1281 static constexpr auto mbr_ptr{&SgArithmeticIfStatement::p_equal_label};
1282 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1283 using bind = Desc<SgArithmeticIfStatement, SgLabelRefExp* SgArithmeticIfStatement::*, &SgArithmeticIfStatement::p_equal_label>;
1284};
1285template <> struct describe_field_t<SgArithmeticIfStatement,SgLabelRefExp*,&SgArithmeticIfStatement::p_greater_label> {
1287 using field_type = SgLabelRefExp*;
1288 static constexpr size_t position{3};
1289 static constexpr char const * const name{"greater_label"};
1290 static constexpr char const * const typestr{"SgLabelRefExp*"};
1291 static constexpr bool traverse{false};
1292 static constexpr auto mbr_ptr{&SgArithmeticIfStatement::p_greater_label};
1293 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1294 using bind = Desc<SgArithmeticIfStatement, SgLabelRefExp* SgArithmeticIfStatement::*, &SgArithmeticIfStatement::p_greater_label>;
1295};
1305template <> struct node_from_variant_t<36> { using type = SgArithmeticIfStatement; };
1306
1307// Class: ArrayType
1308template <> struct describe_field_t<SgArrayType,SgType*,&SgArrayType::p_base_type> {
1309 using parent = SgArrayType;
1310 using field_type = SgType*;
1311 static constexpr size_t position{0};
1312 static constexpr char const * const name{"base_type"};
1313 static constexpr char const * const typestr{"SgType*"};
1314 static constexpr bool traverse{false};
1315 static constexpr auto mbr_ptr{&SgArrayType::p_base_type};
1316 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1317 using bind = Desc<SgArrayType, SgType* SgArrayType::*, &SgArrayType::p_base_type>;
1318};
1319template <> struct describe_field_t<SgArrayType,SgExpression*,&SgArrayType::p_index> {
1320 using parent = SgArrayType;
1321 using field_type = SgExpression*;
1322 static constexpr size_t position{1};
1323 static constexpr char const * const name{"index"};
1324 static constexpr char const * const typestr{"SgExpression*"};
1325 static constexpr bool traverse{true};
1326 static constexpr auto mbr_ptr{&SgArrayType::p_index};
1327 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1328 using bind = Desc<SgArrayType, SgExpression* SgArrayType::*, &SgArrayType::p_index>;
1329};
1330template <> struct describe_field_t<SgArrayType,SgExprListExp*,&SgArrayType::p_dim_info> {
1331 using parent = SgArrayType;
1332 using field_type = SgExprListExp*;
1333 static constexpr size_t position{2};
1334 static constexpr char const * const name{"dim_info"};
1335 static constexpr char const * const typestr{"SgExprListExp*"};
1336 static constexpr bool traverse{true};
1337 static constexpr auto mbr_ptr{&SgArrayType::p_dim_info};
1338 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1339 using bind = Desc<SgArrayType, SgExprListExp* SgArrayType::*, &SgArrayType::p_dim_info>;
1340};
1341template <> struct describe_field_t<SgArrayType,int,&SgArrayType::p_rank> {
1342 using parent = SgArrayType;
1343 using field_type = int;
1344 static constexpr size_t position{3};
1345 static constexpr char const * const name{"rank"};
1346 static constexpr char const * const typestr{"int"};
1347 static constexpr bool traverse{false};
1348 static constexpr auto mbr_ptr{&SgArrayType::p_rank};
1349 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1350 using bind = Desc<SgArrayType, int SgArrayType::*, &SgArrayType::p_rank>;
1351};
1352template <> struct describe_field_t<SgArrayType,int,&SgArrayType::p_number_of_elements> {
1353 using parent = SgArrayType;
1354 using field_type = int;
1355 static constexpr size_t position{4};
1356 static constexpr char const * const name{"number_of_elements"};
1357 static constexpr char const * const typestr{"int"};
1358 static constexpr bool traverse{false};
1359 static constexpr auto mbr_ptr{&SgArrayType::p_number_of_elements};
1360 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1361 using bind = Desc<SgArrayType, int SgArrayType::*, &SgArrayType::p_number_of_elements>;
1362};
1363template <> struct describe_field_t<SgArrayType,bool,&SgArrayType::p_is_variable_length_array> {
1364 using parent = SgArrayType;
1365 using field_type = bool;
1366 static constexpr size_t position{5};
1367 static constexpr char const * const name{"is_variable_length_array"};
1368 static constexpr char const * const typestr{"bool"};
1369 static constexpr bool traverse{false};
1370 static constexpr auto mbr_ptr{&SgArrayType::p_is_variable_length_array};
1371 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1372 using bind = Desc<SgArrayType, bool SgArrayType::*, &SgArrayType::p_is_variable_length_array>;
1373};
1383template <> struct node_from_variant_t<37> { using type = SgArrayType; };
1384
1385// Class: ArrowExp
1386template <> struct describe_node_t<SgArrowExp> {
1387 using node = SgArrowExp;
1388 using base = SgBinaryOp;
1389 static constexpr char const * const name{"ArrowExp"};
1390 static constexpr unsigned long variant{38};
1391 static constexpr bool concrete{true};
1392 using subclasses_t = mp::List<>;
1393 using fields_t = mp::List<>;
1394};
1395template <> struct node_from_variant_t<38> { using type = SgArrowExp; };
1396
1397// Class: ArrowStarOp
1398template <> struct describe_node_t<SgArrowStarOp> {
1399 using node = SgArrowStarOp;
1400 using base = SgBinaryOp;
1401 static constexpr char const * const name{"ArrowStarOp"};
1402 static constexpr unsigned long variant{39};
1403 static constexpr bool concrete{true};
1404 using subclasses_t = mp::List<>;
1405 using fields_t = mp::List<>;
1406};
1407template <> struct node_from_variant_t<39> { using type = SgArrowStarOp; };
1408
1409// Class: AsmBasicString
1410template <> struct describe_field_t<SgAsmBasicString,std::string,&SgAsmBasicString::p_string> {
1411 using parent = SgAsmBasicString;
1412 using field_type = std::string;
1413 static constexpr size_t position{0};
1414 static constexpr char const * const name{"string"};
1415 static constexpr char const * const typestr{"std::string"};
1416 static constexpr bool traverse{false};
1417 static constexpr auto mbr_ptr{&SgAsmBasicString::p_string};
1418 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1419 using bind = Desc<SgAsmBasicString, std::string SgAsmBasicString::*, &SgAsmBasicString::p_string>;
1420};
1422 using node = SgAsmBasicString;
1423 using base = SgAsmGenericString;
1424 static constexpr char const * const name{"AsmBasicString"};
1425 static constexpr unsigned long variant{46};
1426 static constexpr bool concrete{true};
1427 using subclasses_t = mp::List<>;
1429};
1430template <> struct node_from_variant_t<46> { using type = SgAsmBasicString; };
1431
1432// Class: AsmBinaryAdd
1433template <> struct describe_node_t<SgAsmBinaryAdd> {
1434 using node = SgAsmBinaryAdd;
1436 static constexpr char const * const name{"AsmBinaryAdd"};
1437 static constexpr unsigned long variant{47};
1438 static constexpr bool concrete{true};
1439 using subclasses_t = mp::List<>;
1440 using fields_t = mp::List<>;
1441};
1442template <> struct node_from_variant_t<47> { using type = SgAsmBinaryAdd; };
1443
1444// Class: AsmBinaryAsr
1445template <> struct describe_node_t<SgAsmBinaryAsr> {
1446 using node = SgAsmBinaryAsr;
1448 static constexpr char const * const name{"AsmBinaryAsr"};
1449 static constexpr unsigned long variant{50};
1450 static constexpr bool concrete{true};
1451 using subclasses_t = mp::List<>;
1452 using fields_t = mp::List<>;
1453};
1454template <> struct node_from_variant_t<50> { using type = SgAsmBinaryAsr; };
1455
1456// Class: AsmBinaryDivide
1458 using node = SgAsmBinaryDivide;
1460 static constexpr char const * const name{"AsmBinaryDivide"};
1461 static constexpr unsigned long variant{51};
1462 static constexpr bool concrete{true};
1463 using subclasses_t = mp::List<>;
1464 using fields_t = mp::List<>;
1465};
1466template <> struct node_from_variant_t<51> { using type = SgAsmBinaryDivide; };
1467
1468// Class: AsmBinaryExpression
1469template <> struct describe_field_t<SgAsmBinaryExpression,SgAsmExpression*,&SgAsmBinaryExpression::p_lhs> {
1471 using field_type = SgAsmExpression*;
1472 static constexpr size_t position{0};
1473 static constexpr char const * const name{"lhs"};
1474 static constexpr char const * const typestr{"SgAsmExpression*"};
1475 static constexpr bool traverse{true};
1476 static constexpr auto mbr_ptr{&SgAsmBinaryExpression::p_lhs};
1477 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1478 using bind = Desc<SgAsmBinaryExpression, SgAsmExpression* SgAsmBinaryExpression::*, &SgAsmBinaryExpression::p_lhs>;
1479};
1480template <> struct describe_field_t<SgAsmBinaryExpression,SgAsmExpression*,&SgAsmBinaryExpression::p_rhs> {
1482 using field_type = SgAsmExpression*;
1483 static constexpr size_t position{1};
1484 static constexpr char const * const name{"rhs"};
1485 static constexpr char const * const typestr{"SgAsmExpression*"};
1486 static constexpr bool traverse{true};
1487 static constexpr auto mbr_ptr{&SgAsmBinaryExpression::p_rhs};
1488 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1489 using bind = Desc<SgAsmBinaryExpression, SgAsmExpression* SgAsmBinaryExpression::*, &SgAsmBinaryExpression::p_rhs>;
1490};
1500template <> struct node_from_variant_t<52> { using type = SgAsmBinaryExpression; };
1501
1502// Class: AsmBinaryLsl
1503template <> struct describe_node_t<SgAsmBinaryLsl> {
1504 using node = SgAsmBinaryLsl;
1506 static constexpr char const * const name{"AsmBinaryLsl"};
1507 static constexpr unsigned long variant{53};
1508 static constexpr bool concrete{true};
1509 using subclasses_t = mp::List<>;
1510 using fields_t = mp::List<>;
1511};
1512template <> struct node_from_variant_t<53> { using type = SgAsmBinaryLsl; };
1513
1514// Class: AsmBinaryLsr
1515template <> struct describe_node_t<SgAsmBinaryLsr> {
1516 using node = SgAsmBinaryLsr;
1518 static constexpr char const * const name{"AsmBinaryLsr"};
1519 static constexpr unsigned long variant{54};
1520 static constexpr bool concrete{true};
1521 using subclasses_t = mp::List<>;
1522 using fields_t = mp::List<>;
1523};
1524template <> struct node_from_variant_t<54> { using type = SgAsmBinaryLsr; };
1525
1526// Class: AsmBinaryMod
1527template <> struct describe_node_t<SgAsmBinaryMod> {
1528 using node = SgAsmBinaryMod;
1530 static constexpr char const * const name{"AsmBinaryMod"};
1531 static constexpr unsigned long variant{55};
1532 static constexpr bool concrete{true};
1533 using subclasses_t = mp::List<>;
1534 using fields_t = mp::List<>;
1535};
1536template <> struct node_from_variant_t<55> { using type = SgAsmBinaryMod; };
1537
1538// Class: AsmBinaryMsl
1539template <> struct describe_node_t<SgAsmBinaryMsl> {
1540 using node = SgAsmBinaryMsl;
1542 static constexpr char const * const name{"AsmBinaryMsl"};
1543 static constexpr unsigned long variant{56};
1544 static constexpr bool concrete{true};
1545 using subclasses_t = mp::List<>;
1546 using fields_t = mp::List<>;
1547};
1548template <> struct node_from_variant_t<56> { using type = SgAsmBinaryMsl; };
1549
1550// Class: AsmBinaryMultiply
1552 using node = SgAsmBinaryMultiply;
1554 static constexpr char const * const name{"AsmBinaryMultiply"};
1555 static constexpr unsigned long variant{57};
1556 static constexpr bool concrete{true};
1557 using subclasses_t = mp::List<>;
1558 using fields_t = mp::List<>;
1559};
1560template <> struct node_from_variant_t<57> { using type = SgAsmBinaryMultiply; };
1561
1562// Class: AsmBinaryRor
1563template <> struct describe_node_t<SgAsmBinaryRor> {
1564 using node = SgAsmBinaryRor;
1566 static constexpr char const * const name{"AsmBinaryRor"};
1567 static constexpr unsigned long variant{58};
1568 static constexpr bool concrete{true};
1569 using subclasses_t = mp::List<>;
1570 using fields_t = mp::List<>;
1571};
1572template <> struct node_from_variant_t<58> { using type = SgAsmBinaryRor; };
1573
1574// Class: AsmBinarySubtract
1576 using node = SgAsmBinarySubtract;
1578 static constexpr char const * const name{"AsmBinarySubtract"};
1579 static constexpr unsigned long variant{59};
1580 static constexpr bool concrete{true};
1581 using subclasses_t = mp::List<>;
1582 using fields_t = mp::List<>;
1583};
1584template <> struct node_from_variant_t<59> { using type = SgAsmBinarySubtract; };
1585
1586// Class: AsmBlock
1587template <> struct describe_field_t<SgAsmBlock,rose_addr_t,&SgAsmBlock::p_id> {
1588 using parent = SgAsmBlock;
1589 using field_type = rose_addr_t;
1590 static constexpr size_t position{0};
1591 static constexpr char const * const name{"id"};
1592 static constexpr char const * const typestr{"rose_addr_t"};
1593 static constexpr bool traverse{false};
1594 static constexpr auto mbr_ptr{&SgAsmBlock::p_id};
1595 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1596 using bind = Desc<SgAsmBlock, rose_addr_t SgAsmBlock::*, &SgAsmBlock::p_id>;
1597};
1598template <> struct describe_field_t<SgAsmBlock,unsigned,&SgAsmBlock::p_reason> {
1599 using parent = SgAsmBlock;
1600 using field_type = unsigned;
1601 static constexpr size_t position{1};
1602 static constexpr char const * const name{"reason"};
1603 static constexpr char const * const typestr{"unsigned"};
1604 static constexpr bool traverse{false};
1605 static constexpr auto mbr_ptr{&SgAsmBlock::p_reason};
1606 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1607 using bind = Desc<SgAsmBlock, unsigned SgAsmBlock::*, &SgAsmBlock::p_reason>;
1608};
1609template <> struct describe_field_t<SgAsmBlock,SgAsmStatementPtrList,&SgAsmBlock::p_statementList> {
1610 using parent = SgAsmBlock;
1611 using field_type = SgAsmStatementPtrList;
1612 static constexpr size_t position{2};
1613 static constexpr char const * const name{"statementList"};
1614 static constexpr char const * const typestr{"SgAsmStatementPtrList"};
1615 static constexpr bool traverse{true};
1616 static constexpr auto mbr_ptr{&SgAsmBlock::p_statementList};
1617 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1618 using bind = Desc<SgAsmBlock, SgAsmStatementPtrList SgAsmBlock::*, &SgAsmBlock::p_statementList>;
1619};
1620template <> struct describe_field_t<SgAsmBlock,SgAsmIntegerValuePtrList,&SgAsmBlock::p_successors> {
1621 using parent = SgAsmBlock;
1622 using field_type = SgAsmIntegerValuePtrList;
1623 static constexpr size_t position{3};
1624 static constexpr char const * const name{"successors"};
1625 static constexpr char const * const typestr{"SgAsmIntegerValuePtrList"};
1626 static constexpr bool traverse{false};
1627 static constexpr auto mbr_ptr{&SgAsmBlock::p_successors};
1628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1629 using bind = Desc<SgAsmBlock, SgAsmIntegerValuePtrList SgAsmBlock::*, &SgAsmBlock::p_successors>;
1630};
1631template <> struct describe_field_t<SgAsmBlock,bool,&SgAsmBlock::p_successorsComplete> {
1632 using parent = SgAsmBlock;
1633 using field_type = bool;
1634 static constexpr size_t position{4};
1635 static constexpr char const * const name{"successorsComplete"};
1636 static constexpr char const * const typestr{"bool"};
1637 static constexpr bool traverse{false};
1638 static constexpr auto mbr_ptr{&SgAsmBlock::p_successorsComplete};
1639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1640 using bind = Desc<SgAsmBlock, bool SgAsmBlock::*, &SgAsmBlock::p_successorsComplete>;
1641};
1642template <> struct describe_field_t<SgAsmBlock,SgAsmBlock*,&SgAsmBlock::p_immediateDominator> {
1643 using parent = SgAsmBlock;
1644 using field_type = SgAsmBlock*;
1645 static constexpr size_t position{5};
1646 static constexpr char const * const name{"immediateDominator"};
1647 static constexpr char const * const typestr{"SgAsmBlock*"};
1648 static constexpr bool traverse{false};
1649 static constexpr auto mbr_ptr{&SgAsmBlock::p_immediateDominator};
1650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1651 using bind = Desc<SgAsmBlock, SgAsmBlock* SgAsmBlock::*, &SgAsmBlock::p_immediateDominator>;
1652};
1653template <> struct describe_field_t<SgAsmBlock,size_t,&SgAsmBlock::p_cachedVertex> {
1654 using parent = SgAsmBlock;
1655 using field_type = size_t;
1656 static constexpr size_t position{6};
1657 static constexpr char const * const name{"cachedVertex"};
1658 static constexpr char const * const typestr{"size_t"};
1659 static constexpr bool traverse{false};
1660 static constexpr auto mbr_ptr{&SgAsmBlock::p_cachedVertex};
1661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1662 using bind = Desc<SgAsmBlock, size_t SgAsmBlock::*, &SgAsmBlock::p_cachedVertex>;
1663};
1664template <> struct describe_field_t<SgAsmBlock,double,&SgAsmBlock::p_codeLikelihood> {
1665 using parent = SgAsmBlock;
1666 using field_type = double;
1667 static constexpr size_t position{7};
1668 static constexpr char const * const name{"codeLikelihood"};
1669 static constexpr char const * const typestr{"double"};
1670 static constexpr bool traverse{false};
1671 static constexpr auto mbr_ptr{&SgAsmBlock::p_codeLikelihood};
1672 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1673 using bind = Desc<SgAsmBlock, double SgAsmBlock::*, &SgAsmBlock::p_codeLikelihood>;
1674};
1675template <> struct describe_field_t<SgAsmBlock,int64_t,&SgAsmBlock::p_stackDeltaOut> {
1676 using parent = SgAsmBlock;
1677 using field_type = int64_t;
1678 static constexpr size_t position{8};
1679 static constexpr char const * const name{"stackDeltaOut"};
1680 static constexpr char const * const typestr{"int64_t"};
1681 static constexpr bool traverse{false};
1682 static constexpr auto mbr_ptr{&SgAsmBlock::p_stackDeltaOut};
1683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1684 using bind = Desc<SgAsmBlock, int64_t SgAsmBlock::*, &SgAsmBlock::p_stackDeltaOut>;
1685};
1695template <> struct node_from_variant_t<62> { using type = SgAsmBlock; };
1696
1697// Class: AsmCoffStrtab
1699 using node = SgAsmCoffStrtab;
1700 using base = SgAsmGenericStrtab;
1701 static constexpr char const * const name{"AsmCoffStrtab"};
1702 static constexpr unsigned long variant{63};
1703 static constexpr bool concrete{true};
1704 using subclasses_t = mp::List<>;
1705 using fields_t = mp::List<>;
1706};
1707template <> struct node_from_variant_t<63> { using type = SgAsmCoffStrtab; };
1708
1709// Class: AsmCoffSymbol
1710template <> struct describe_field_t<SgAsmCoffSymbol,std::string,&SgAsmCoffSymbol::p_st_name> {
1711 using parent = SgAsmCoffSymbol;
1712 using field_type = std::string;
1713 static constexpr size_t position{0};
1714 static constexpr char const * const name{"st_name"};
1715 static constexpr char const * const typestr{"std::string"};
1716 static constexpr bool traverse{false};
1717 static constexpr auto mbr_ptr{&SgAsmCoffSymbol::p_st_name};
1718 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1719 using bind = Desc<SgAsmCoffSymbol, std::string SgAsmCoffSymbol::*, &SgAsmCoffSymbol::p_st_name>;
1720};
1721template <> struct describe_field_t<SgAsmCoffSymbol,rose_addr_t,&SgAsmCoffSymbol::p_st_name_offset> {
1722 using parent = SgAsmCoffSymbol;
1723 using field_type = rose_addr_t;
1724 static constexpr size_t position{1};
1725 static constexpr char const * const name{"st_name_offset"};
1726 static constexpr char const * const typestr{"rose_addr_t"};
1727 static constexpr bool traverse{false};
1728 static constexpr auto mbr_ptr{&SgAsmCoffSymbol::p_st_name_offset};
1729 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1730 using bind = Desc<SgAsmCoffSymbol, rose_addr_t SgAsmCoffSymbol::*, &SgAsmCoffSymbol::p_st_name_offset>;
1731};
1732template <> struct describe_field_t<SgAsmCoffSymbol,int,&SgAsmCoffSymbol::p_st_section_num> {
1733 using parent = SgAsmCoffSymbol;
1734 using field_type = int;
1735 static constexpr size_t position{2};
1736 static constexpr char const * const name{"st_section_num"};
1737 static constexpr char const * const typestr{"int"};
1738 static constexpr bool traverse{false};
1739 static constexpr auto mbr_ptr{&SgAsmCoffSymbol::p_st_section_num};
1740 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1741 using bind = Desc<SgAsmCoffSymbol, int SgAsmCoffSymbol::*, &SgAsmCoffSymbol::p_st_section_num>;
1742};
1743template <> struct describe_field_t<SgAsmCoffSymbol,unsigned,&SgAsmCoffSymbol::p_st_type> {
1744 using parent = SgAsmCoffSymbol;
1745 using field_type = unsigned;
1746 static constexpr size_t position{3};
1747 static constexpr char const * const name{"st_type"};
1748 static constexpr char const * const typestr{"unsigned"};
1749 static constexpr bool traverse{false};
1750 static constexpr auto mbr_ptr{&SgAsmCoffSymbol::p_st_type};
1751 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1752 using bind = Desc<SgAsmCoffSymbol, unsigned SgAsmCoffSymbol::*, &SgAsmCoffSymbol::p_st_type>;
1753};
1754template <> struct describe_field_t<SgAsmCoffSymbol,unsigned,&SgAsmCoffSymbol::p_st_storage_class> {
1755 using parent = SgAsmCoffSymbol;
1756 using field_type = unsigned;
1757 static constexpr size_t position{4};
1758 static constexpr char const * const name{"st_storage_class"};
1759 static constexpr char const * const typestr{"unsigned"};
1760 static constexpr bool traverse{false};
1761 static constexpr auto mbr_ptr{&SgAsmCoffSymbol::p_st_storage_class};
1762 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1763 using bind = Desc<SgAsmCoffSymbol, unsigned SgAsmCoffSymbol::*, &SgAsmCoffSymbol::p_st_storage_class>;
1764};
1765template <> struct describe_field_t<SgAsmCoffSymbol,unsigned,&SgAsmCoffSymbol::p_st_num_aux_entries> {
1766 using parent = SgAsmCoffSymbol;
1767 using field_type = unsigned;
1768 static constexpr size_t position{5};
1769 static constexpr char const * const name{"st_num_aux_entries"};
1770 static constexpr char const * const typestr{"unsigned"};
1771 static constexpr bool traverse{false};
1772 static constexpr auto mbr_ptr{&SgAsmCoffSymbol::p_st_num_aux_entries};
1773 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1774 using bind = Desc<SgAsmCoffSymbol, unsigned SgAsmCoffSymbol::*, &SgAsmCoffSymbol::p_st_num_aux_entries>;
1775};
1776template <> struct describe_field_t<SgAsmCoffSymbol,SgUnsignedCharList,&SgAsmCoffSymbol::p_auxiliaryData> {
1777 using parent = SgAsmCoffSymbol;
1778 using field_type = SgUnsignedCharList;
1779 static constexpr size_t position{6};
1780 static constexpr char const * const name{"auxiliaryData"};
1781 static constexpr char const * const typestr{"SgUnsignedCharList"};
1782 static constexpr bool traverse{false};
1783 static constexpr auto mbr_ptr{&SgAsmCoffSymbol::p_auxiliaryData};
1784 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1785 using bind = Desc<SgAsmCoffSymbol, SgUnsignedCharList SgAsmCoffSymbol::*, &SgAsmCoffSymbol::p_auxiliaryData>;
1786};
1796template <> struct node_from_variant_t<64> { using type = SgAsmCoffSymbol; };
1797
1798// Class: AsmCoffSymbolList
1799template <> struct describe_field_t<SgAsmCoffSymbolList,SgAsmCoffSymbolPtrList,&SgAsmCoffSymbolList::p_symbols> {
1801 using field_type = SgAsmCoffSymbolPtrList;
1802 static constexpr size_t position{0};
1803 static constexpr char const * const name{"symbols"};
1804 static constexpr char const * const typestr{"SgAsmCoffSymbolPtrList"};
1805 static constexpr bool traverse{true};
1806 static constexpr auto mbr_ptr{&SgAsmCoffSymbolList::p_symbols};
1807 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1808 using bind = Desc<SgAsmCoffSymbolList, SgAsmCoffSymbolPtrList SgAsmCoffSymbolList::*, &SgAsmCoffSymbolList::p_symbols>;
1809};
1811 using node = SgAsmCoffSymbolList;
1813 static constexpr char const * const name{"AsmCoffSymbolList"};
1814 static constexpr unsigned long variant{65};
1815 static constexpr bool concrete{true};
1816 using subclasses_t = mp::List<>;
1818};
1819template <> struct node_from_variant_t<65> { using type = SgAsmCoffSymbolList; };
1820
1821// Class: AsmCoffSymbolTable
1822template <> struct describe_field_t<SgAsmCoffSymbolTable,SgAsmGenericSection*,&SgAsmCoffSymbolTable::p_strtab> {
1825 static constexpr size_t position{0};
1826 static constexpr char const * const name{"strtab"};
1827 static constexpr char const * const typestr{"SgAsmGenericSection*"};
1828 static constexpr bool traverse{false};
1829 static constexpr auto mbr_ptr{&SgAsmCoffSymbolTable::p_strtab};
1830 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1831 using bind = Desc<SgAsmCoffSymbolTable, SgAsmGenericSection* SgAsmCoffSymbolTable::*, &SgAsmCoffSymbolTable::p_strtab>;
1832};
1833template <> struct describe_field_t<SgAsmCoffSymbolTable,SgAsmCoffSymbolList*,&SgAsmCoffSymbolTable::p_symbols> {
1836 static constexpr size_t position{1};
1837 static constexpr char const * const name{"symbols"};
1838 static constexpr char const * const typestr{"SgAsmCoffSymbolList*"};
1839 static constexpr bool traverse{true};
1840 static constexpr auto mbr_ptr{&SgAsmCoffSymbolTable::p_symbols};
1841 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1842 using bind = Desc<SgAsmCoffSymbolTable, SgAsmCoffSymbolList* SgAsmCoffSymbolTable::*, &SgAsmCoffSymbolTable::p_symbols>;
1843};
1845 using node = SgAsmCoffSymbolTable;
1846 using base = SgAsmGenericSection;
1847 static constexpr char const * const name{"AsmCoffSymbolTable"};
1848 static constexpr unsigned long variant{66};
1849 static constexpr bool concrete{true};
1850 using subclasses_t = mp::List<>;
1852};
1853template <> struct node_from_variant_t<66> { using type = SgAsmCoffSymbolTable; };
1854
1855// Class: AsmCommonSubExpression
1856template <> struct describe_field_t<SgAsmCommonSubExpression,SgAsmExpression*,&SgAsmCommonSubExpression::p_subexpression> {
1858 using field_type = SgAsmExpression*;
1859 static constexpr size_t position{0};
1860 static constexpr char const * const name{"subexpression"};
1861 static constexpr char const * const typestr{"SgAsmExpression*"};
1862 static constexpr bool traverse{true};
1863 static constexpr auto mbr_ptr{&SgAsmCommonSubExpression::p_subexpression};
1864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1865 using bind = Desc<SgAsmCommonSubExpression, SgAsmExpression* SgAsmCommonSubExpression::*, &SgAsmCommonSubExpression::p_subexpression>;
1866};
1869 using base = SgAsmExpression;
1870 static constexpr char const * const name{"AsmCommonSubExpression"};
1871 static constexpr unsigned long variant{67};
1872 static constexpr bool concrete{true};
1873 using subclasses_t = mp::List<>;
1875};
1876template <> struct node_from_variant_t<67> { using type = SgAsmCommonSubExpression; };
1877
1878// Class: AsmControlFlagsExpression
1879template <> struct describe_field_t<SgAsmControlFlagsExpression,unsigned long,&SgAsmControlFlagsExpression::p_bitFlags> {
1881 using field_type = unsigned long;
1882 static constexpr size_t position{0};
1883 static constexpr char const * const name{"bitFlags"};
1884 static constexpr char const * const typestr{"unsigned long"};
1885 static constexpr bool traverse{false};
1886 static constexpr auto mbr_ptr{&SgAsmControlFlagsExpression::p_bitFlags};
1887 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1888 using bind = Desc<SgAsmControlFlagsExpression, unsigned long SgAsmControlFlagsExpression::*, &SgAsmControlFlagsExpression::p_bitFlags>;
1889};
1892 using base = SgAsmExpression;
1893 static constexpr char const * const name{"AsmControlFlagsExpression"};
1894 static constexpr unsigned long variant{68};
1895 static constexpr bool concrete{true};
1896 using subclasses_t = mp::List<>;
1898};
1899template <> struct node_from_variant_t<68> { using type = SgAsmControlFlagsExpression; };
1900
1901// Class: AsmConstantExpression
1902template <> struct describe_field_t<SgAsmConstantExpression,Sawyer::Container::BitVector,&SgAsmConstantExpression::p_bitVector> {
1905 static constexpr size_t position{0};
1906 static constexpr char const * const name{"bitVector"};
1907 static constexpr char const * const typestr{"Sawyer::Container::BitVector"};
1908 static constexpr bool traverse{false};
1909 static constexpr auto mbr_ptr{&SgAsmConstantExpression::p_bitVector};
1910 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1911 using bind = Desc<SgAsmConstantExpression, Sawyer::Container::BitVector SgAsmConstantExpression::*, &SgAsmConstantExpression::p_bitVector>;
1912};
1915 using base = SgAsmValueExpression;
1916 static constexpr char const * const name{"AsmConstantExpression"};
1917 static constexpr unsigned long variant{69};
1918 static constexpr bool concrete{false};
1921};
1922template <> struct node_from_variant_t<69> { using type = SgAsmConstantExpression; };
1923
1924// Class: AsmDOSExtendedHeader
1925template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_res1> {
1927 using field_type = unsigned;
1928 static constexpr size_t position{0};
1929 static constexpr char const * const name{"e_res1"};
1930 static constexpr char const * const typestr{"unsigned"};
1931 static constexpr bool traverse{false};
1932 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_res1};
1933 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1934 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_res1>;
1935};
1936template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_oemid> {
1938 using field_type = unsigned;
1939 static constexpr size_t position{1};
1940 static constexpr char const * const name{"e_oemid"};
1941 static constexpr char const * const typestr{"unsigned"};
1942 static constexpr bool traverse{false};
1943 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_oemid};
1944 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1945 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_oemid>;
1946};
1947template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_oeminfo> {
1949 using field_type = unsigned;
1950 static constexpr size_t position{2};
1951 static constexpr char const * const name{"e_oeminfo"};
1952 static constexpr char const * const typestr{"unsigned"};
1953 static constexpr bool traverse{false};
1954 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_oeminfo};
1955 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1956 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_oeminfo>;
1957};
1958template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_res2> {
1960 using field_type = unsigned;
1961 static constexpr size_t position{3};
1962 static constexpr char const * const name{"e_res2"};
1963 static constexpr char const * const typestr{"unsigned"};
1964 static constexpr bool traverse{false};
1965 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_res2};
1966 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1967 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_res2>;
1968};
1969template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_res3> {
1971 using field_type = unsigned;
1972 static constexpr size_t position{4};
1973 static constexpr char const * const name{"e_res3"};
1974 static constexpr char const * const typestr{"unsigned"};
1975 static constexpr bool traverse{false};
1976 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_res3};
1977 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1978 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_res3>;
1979};
1980template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_res4> {
1982 using field_type = unsigned;
1983 static constexpr size_t position{5};
1984 static constexpr char const * const name{"e_res4"};
1985 static constexpr char const * const typestr{"unsigned"};
1986 static constexpr bool traverse{false};
1987 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_res4};
1988 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
1989 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_res4>;
1990};
1991template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_res5> {
1993 using field_type = unsigned;
1994 static constexpr size_t position{6};
1995 static constexpr char const * const name{"e_res5"};
1996 static constexpr char const * const typestr{"unsigned"};
1997 static constexpr bool traverse{false};
1998 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_res5};
1999 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2000 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_res5>;
2001};
2002template <> struct describe_field_t<SgAsmDOSExtendedHeader,unsigned,&SgAsmDOSExtendedHeader::p_e_res6> {
2004 using field_type = unsigned;
2005 static constexpr size_t position{7};
2006 static constexpr char const * const name{"e_res6"};
2007 static constexpr char const * const typestr{"unsigned"};
2008 static constexpr bool traverse{false};
2009 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_res6};
2010 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2011 using bind = Desc<SgAsmDOSExtendedHeader, unsigned SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_res6>;
2012};
2013template <> struct describe_field_t<SgAsmDOSExtendedHeader,rose_addr_t,&SgAsmDOSExtendedHeader::p_e_lfanew> {
2015 using field_type = rose_addr_t;
2016 static constexpr size_t position{8};
2017 static constexpr char const * const name{"e_lfanew"};
2018 static constexpr char const * const typestr{"rose_addr_t"};
2019 static constexpr bool traverse{false};
2020 static constexpr auto mbr_ptr{&SgAsmDOSExtendedHeader::p_e_lfanew};
2021 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2022 using bind = Desc<SgAsmDOSExtendedHeader, rose_addr_t SgAsmDOSExtendedHeader::*, &SgAsmDOSExtendedHeader::p_e_lfanew>;
2023};
2033template <> struct node_from_variant_t<70> { using type = SgAsmDOSExtendedHeader; };
2034
2035// Class: AsmDOSFileHeader
2036template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_last_page_size> {
2037 using parent = SgAsmDOSFileHeader;
2038 using field_type = uint16_t;
2039 static constexpr size_t position{0};
2040 static constexpr char const * const name{"e_last_page_size"};
2041 static constexpr char const * const typestr{"uint16_t"};
2042 static constexpr bool traverse{false};
2043 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_last_page_size};
2044 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2045 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_last_page_size>;
2046};
2047template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_total_pages> {
2048 using parent = SgAsmDOSFileHeader;
2049 using field_type = uint16_t;
2050 static constexpr size_t position{1};
2051 static constexpr char const * const name{"e_total_pages"};
2052 static constexpr char const * const typestr{"uint16_t"};
2053 static constexpr bool traverse{false};
2054 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_total_pages};
2055 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2056 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_total_pages>;
2057};
2058template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_nrelocs> {
2059 using parent = SgAsmDOSFileHeader;
2060 using field_type = uint16_t;
2061 static constexpr size_t position{2};
2062 static constexpr char const * const name{"e_nrelocs"};
2063 static constexpr char const * const typestr{"uint16_t"};
2064 static constexpr bool traverse{false};
2065 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_nrelocs};
2066 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2067 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_nrelocs>;
2068};
2069template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_header_paragraphs> {
2070 using parent = SgAsmDOSFileHeader;
2071 using field_type = uint16_t;
2072 static constexpr size_t position{3};
2073 static constexpr char const * const name{"e_header_paragraphs"};
2074 static constexpr char const * const typestr{"uint16_t"};
2075 static constexpr bool traverse{false};
2076 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_header_paragraphs};
2077 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2078 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_header_paragraphs>;
2079};
2080template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_minalloc> {
2081 using parent = SgAsmDOSFileHeader;
2082 using field_type = uint16_t;
2083 static constexpr size_t position{4};
2084 static constexpr char const * const name{"e_minalloc"};
2085 static constexpr char const * const typestr{"uint16_t"};
2086 static constexpr bool traverse{false};
2087 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_minalloc};
2088 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2089 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_minalloc>;
2090};
2091template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_maxalloc> {
2092 using parent = SgAsmDOSFileHeader;
2093 using field_type = uint16_t;
2094 static constexpr size_t position{5};
2095 static constexpr char const * const name{"e_maxalloc"};
2096 static constexpr char const * const typestr{"uint16_t"};
2097 static constexpr bool traverse{false};
2098 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_maxalloc};
2099 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2100 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_maxalloc>;
2101};
2102template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_ss> {
2103 using parent = SgAsmDOSFileHeader;
2104 using field_type = uint16_t;
2105 static constexpr size_t position{6};
2106 static constexpr char const * const name{"e_ss"};
2107 static constexpr char const * const typestr{"uint16_t"};
2108 static constexpr bool traverse{false};
2109 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_ss};
2110 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2111 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_ss>;
2112};
2113template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_sp> {
2114 using parent = SgAsmDOSFileHeader;
2115 using field_type = uint16_t;
2116 static constexpr size_t position{7};
2117 static constexpr char const * const name{"e_sp"};
2118 static constexpr char const * const typestr{"uint16_t"};
2119 static constexpr bool traverse{false};
2120 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_sp};
2121 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2122 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_sp>;
2123};
2124template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_cksum> {
2125 using parent = SgAsmDOSFileHeader;
2126 using field_type = uint16_t;
2127 static constexpr size_t position{8};
2128 static constexpr char const * const name{"e_cksum"};
2129 static constexpr char const * const typestr{"uint16_t"};
2130 static constexpr bool traverse{false};
2131 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_cksum};
2132 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2133 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_cksum>;
2134};
2135template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_ip> {
2136 using parent = SgAsmDOSFileHeader;
2137 using field_type = uint16_t;
2138 static constexpr size_t position{9};
2139 static constexpr char const * const name{"e_ip"};
2140 static constexpr char const * const typestr{"uint16_t"};
2141 static constexpr bool traverse{false};
2142 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_ip};
2143 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2144 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_ip>;
2145};
2146template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_cs> {
2147 using parent = SgAsmDOSFileHeader;
2148 using field_type = uint16_t;
2149 static constexpr size_t position{10};
2150 static constexpr char const * const name{"e_cs"};
2151 static constexpr char const * const typestr{"uint16_t"};
2152 static constexpr bool traverse{false};
2153 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_cs};
2154 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2155 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_cs>;
2156};
2157template <> struct describe_field_t<SgAsmDOSFileHeader,uint16_t,&SgAsmDOSFileHeader::p_e_overlay> {
2158 using parent = SgAsmDOSFileHeader;
2159 using field_type = uint16_t;
2160 static constexpr size_t position{11};
2161 static constexpr char const * const name{"e_overlay"};
2162 static constexpr char const * const typestr{"uint16_t"};
2163 static constexpr bool traverse{false};
2164 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_overlay};
2165 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2166 using bind = Desc<SgAsmDOSFileHeader, uint16_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_overlay>;
2167};
2168template <> struct describe_field_t<SgAsmDOSFileHeader,rose_addr_t,&SgAsmDOSFileHeader::p_e_relocs_offset> {
2169 using parent = SgAsmDOSFileHeader;
2170 using field_type = rose_addr_t;
2171 static constexpr size_t position{12};
2172 static constexpr char const * const name{"e_relocs_offset"};
2173 static constexpr char const * const typestr{"rose_addr_t"};
2174 static constexpr bool traverse{false};
2175 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_relocs_offset};
2176 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2177 using bind = Desc<SgAsmDOSFileHeader, rose_addr_t SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_relocs_offset>;
2178};
2179template <> struct describe_field_t<SgAsmDOSFileHeader,unsigned,&SgAsmDOSFileHeader::p_e_res1> {
2180 using parent = SgAsmDOSFileHeader;
2181 using field_type = unsigned;
2182 static constexpr size_t position{13};
2183 static constexpr char const * const name{"e_res1"};
2184 static constexpr char const * const typestr{"unsigned"};
2185 static constexpr bool traverse{false};
2186 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_e_res1};
2187 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2188 using bind = Desc<SgAsmDOSFileHeader, unsigned SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_e_res1>;
2189};
2190template <> struct describe_field_t<SgAsmDOSFileHeader,SgAsmGenericSection*,&SgAsmDOSFileHeader::p_relocs> {
2191 using parent = SgAsmDOSFileHeader;
2193 static constexpr size_t position{14};
2194 static constexpr char const * const name{"relocs"};
2195 static constexpr char const * const typestr{"SgAsmGenericSection*"};
2196 static constexpr bool traverse{false};
2197 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_relocs};
2198 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2199 using bind = Desc<SgAsmDOSFileHeader, SgAsmGenericSection* SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_relocs>;
2200};
2201template <> struct describe_field_t<SgAsmDOSFileHeader,SgAsmGenericSection*,&SgAsmDOSFileHeader::p_rm_section> {
2202 using parent = SgAsmDOSFileHeader;
2204 static constexpr size_t position{15};
2205 static constexpr char const * const name{"rm_section"};
2206 static constexpr char const * const typestr{"SgAsmGenericSection*"};
2207 static constexpr bool traverse{false};
2208 static constexpr auto mbr_ptr{&SgAsmDOSFileHeader::p_rm_section};
2209 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2210 using bind = Desc<SgAsmDOSFileHeader, SgAsmGenericSection* SgAsmDOSFileHeader::*, &SgAsmDOSFileHeader::p_rm_section>;
2211};
2213 using node = SgAsmDOSFileHeader;
2214 using base = SgAsmGenericHeader;
2215 static constexpr char const * const name{"AsmDOSFileHeader"};
2216 static constexpr unsigned long variant{71};
2217 static constexpr bool concrete{true};
2218 using subclasses_t = mp::List<>;
2220};
2221template <> struct node_from_variant_t<71> { using type = SgAsmDOSFileHeader; };
2222
2223// Class: AsmSynthesizedDataStructureDeclaration
2227 static constexpr char const * const name{"AsmSynthesizedDataStructureDeclaration"};
2228 static constexpr unsigned long variant{72};
2229 static constexpr bool concrete{true};
2230 using subclasses_t = mp::List<>;
2231 using fields_t = mp::List<>;
2232};
2233template <> struct node_from_variant_t<72> { using type = SgAsmSynthesizedDataStructureDeclaration; };
2234
2235// Class: AsmSynthesizedDeclaration
2238 using base = SgAsmStatement;
2239 static constexpr char const * const name{"AsmSynthesizedDeclaration"};
2240 static constexpr unsigned long variant{73};
2241 static constexpr bool concrete{false};
2243 using fields_t = mp::List<>;
2244};
2245template <> struct node_from_variant_t<73> { using type = SgAsmSynthesizedDeclaration; };
2246
2247// Class: AsmDirectRegisterExpression
2251 static constexpr char const * const name{"AsmDirectRegisterExpression"};
2252 static constexpr unsigned long variant{74};
2253 static constexpr bool concrete{true};
2254 using subclasses_t = mp::List<>;
2255 using fields_t = mp::List<>;
2256};
2257template <> struct node_from_variant_t<74> { using type = SgAsmDirectRegisterExpression; };
2258
2259// Class: AsmDwarfAccessDeclaration
2262 using base = SgAsmDwarfConstruct;
2263 static constexpr char const * const name{"AsmDwarfAccessDeclaration"};
2264 static constexpr unsigned long variant{75};
2265 static constexpr bool concrete{true};
2266 using subclasses_t = mp::List<>;
2267 using fields_t = mp::List<>;
2268};
2269template <> struct node_from_variant_t<75> { using type = SgAsmDwarfAccessDeclaration; };
2270
2271// Class: AsmDwarfArrayType
2272template <> struct describe_field_t<SgAsmDwarfArrayType,SgAsmDwarfConstructList*,&SgAsmDwarfArrayType::p_body> {
2275 static constexpr size_t position{0};
2276 static constexpr char const * const name{"body"};
2277 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
2278 static constexpr bool traverse{true};
2279 static constexpr auto mbr_ptr{&SgAsmDwarfArrayType::p_body};
2280 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2281 using bind = Desc<SgAsmDwarfArrayType, SgAsmDwarfConstructList* SgAsmDwarfArrayType::*, &SgAsmDwarfArrayType::p_body>;
2282};
2284 using node = SgAsmDwarfArrayType;
2285 using base = SgAsmDwarfConstruct;
2286 static constexpr char const * const name{"AsmDwarfArrayType"};
2287 static constexpr unsigned long variant{76};
2288 static constexpr bool concrete{true};
2289 using subclasses_t = mp::List<>;
2291};
2292template <> struct node_from_variant_t<76> { using type = SgAsmDwarfArrayType; };
2293
2294// Class: AsmDwarfBaseType
2296 using node = SgAsmDwarfBaseType;
2297 using base = SgAsmDwarfConstruct;
2298 static constexpr char const * const name{"AsmDwarfBaseType"};
2299 static constexpr unsigned long variant{77};
2300 static constexpr bool concrete{true};
2301 using subclasses_t = mp::List<>;
2302 using fields_t = mp::List<>;
2303};
2304template <> struct node_from_variant_t<77> { using type = SgAsmDwarfBaseType; };
2305
2306// Class: AsmDwarfCatchBlock
2308 using node = SgAsmDwarfCatchBlock;
2309 using base = SgAsmDwarfConstruct;
2310 static constexpr char const * const name{"AsmDwarfCatchBlock"};
2311 static constexpr unsigned long variant{78};
2312 static constexpr bool concrete{true};
2313 using subclasses_t = mp::List<>;
2314 using fields_t = mp::List<>;
2315};
2316template <> struct node_from_variant_t<78> { using type = SgAsmDwarfCatchBlock; };
2317
2318// Class: AsmDwarfClassTemplate
2321 using base = SgAsmDwarfConstruct;
2322 static constexpr char const * const name{"AsmDwarfClassTemplate"};
2323 static constexpr unsigned long variant{79};
2324 static constexpr bool concrete{true};
2325 using subclasses_t = mp::List<>;
2326 using fields_t = mp::List<>;
2327};
2328template <> struct node_from_variant_t<79> { using type = SgAsmDwarfClassTemplate; };
2329
2330// Class: AsmDwarfClassType
2331template <> struct describe_field_t<SgAsmDwarfClassType,SgAsmDwarfConstructList*,&SgAsmDwarfClassType::p_body> {
2334 static constexpr size_t position{0};
2335 static constexpr char const * const name{"body"};
2336 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
2337 static constexpr bool traverse{true};
2338 static constexpr auto mbr_ptr{&SgAsmDwarfClassType::p_body};
2339 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2340 using bind = Desc<SgAsmDwarfClassType, SgAsmDwarfConstructList* SgAsmDwarfClassType::*, &SgAsmDwarfClassType::p_body>;
2341};
2343 using node = SgAsmDwarfClassType;
2344 using base = SgAsmDwarfConstruct;
2345 static constexpr char const * const name{"AsmDwarfClassType"};
2346 static constexpr unsigned long variant{80};
2347 static constexpr bool concrete{true};
2348 using subclasses_t = mp::List<>;
2350};
2351template <> struct node_from_variant_t<80> { using type = SgAsmDwarfClassType; };
2352
2353// Class: AsmDwarfCommonBlock
2354template <> struct describe_field_t<SgAsmDwarfCommonBlock,SgAsmDwarfConstructList*,&SgAsmDwarfCommonBlock::p_body> {
2357 static constexpr size_t position{0};
2358 static constexpr char const * const name{"body"};
2359 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
2360 static constexpr bool traverse{true};
2361 static constexpr auto mbr_ptr{&SgAsmDwarfCommonBlock::p_body};
2362 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2363 using bind = Desc<SgAsmDwarfCommonBlock, SgAsmDwarfConstructList* SgAsmDwarfCommonBlock::*, &SgAsmDwarfCommonBlock::p_body>;
2364};
2367 using base = SgAsmDwarfConstruct;
2368 static constexpr char const * const name{"AsmDwarfCommonBlock"};
2369 static constexpr unsigned long variant{81};
2370 static constexpr bool concrete{true};
2371 using subclasses_t = mp::List<>;
2373};
2374template <> struct node_from_variant_t<81> { using type = SgAsmDwarfCommonBlock; };
2375
2376// Class: AsmDwarfCommonInclusion
2379 using base = SgAsmDwarfConstruct;
2380 static constexpr char const * const name{"AsmDwarfCommonInclusion"};
2381 static constexpr unsigned long variant{82};
2382 static constexpr bool concrete{true};
2383 using subclasses_t = mp::List<>;
2384 using fields_t = mp::List<>;
2385};
2386template <> struct node_from_variant_t<82> { using type = SgAsmDwarfCommonInclusion; };
2387
2388// Class: AsmDwarfCompilationUnit
2389template <> struct describe_field_t<SgAsmDwarfCompilationUnit,std::string,&SgAsmDwarfCompilationUnit::p_producer> {
2391 using field_type = std::string;
2392 static constexpr size_t position{0};
2393 static constexpr char const * const name{"producer"};
2394 static constexpr char const * const typestr{"std::string"};
2395 static constexpr bool traverse{false};
2396 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_producer};
2397 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2398 using bind = Desc<SgAsmDwarfCompilationUnit, std::string SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_producer>;
2399};
2400template <> struct describe_field_t<SgAsmDwarfCompilationUnit,std::string,&SgAsmDwarfCompilationUnit::p_language> {
2402 using field_type = std::string;
2403 static constexpr size_t position{1};
2404 static constexpr char const * const name{"language"};
2405 static constexpr char const * const typestr{"std::string"};
2406 static constexpr bool traverse{false};
2407 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_language};
2408 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2409 using bind = Desc<SgAsmDwarfCompilationUnit, std::string SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_language>;
2410};
2411template <> struct describe_field_t<SgAsmDwarfCompilationUnit,uint64_t,&SgAsmDwarfCompilationUnit::p_low_pc> {
2413 using field_type = uint64_t;
2414 static constexpr size_t position{2};
2415 static constexpr char const * const name{"low_pc"};
2416 static constexpr char const * const typestr{"uint64_t"};
2417 static constexpr bool traverse{false};
2418 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_low_pc};
2419 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2420 using bind = Desc<SgAsmDwarfCompilationUnit, uint64_t SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_low_pc>;
2421};
2422template <> struct describe_field_t<SgAsmDwarfCompilationUnit,uint64_t,&SgAsmDwarfCompilationUnit::p_hi_pc> {
2424 using field_type = uint64_t;
2425 static constexpr size_t position{3};
2426 static constexpr char const * const name{"hi_pc"};
2427 static constexpr char const * const typestr{"uint64_t"};
2428 static constexpr bool traverse{false};
2429 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_hi_pc};
2430 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2431 using bind = Desc<SgAsmDwarfCompilationUnit, uint64_t SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_hi_pc>;
2432};
2433template <> struct describe_field_t<SgAsmDwarfCompilationUnit,int,&SgAsmDwarfCompilationUnit::p_version_stamp> {
2435 using field_type = int;
2436 static constexpr size_t position{4};
2437 static constexpr char const * const name{"version_stamp"};
2438 static constexpr char const * const typestr{"int"};
2439 static constexpr bool traverse{false};
2440 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_version_stamp};
2441 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2442 using bind = Desc<SgAsmDwarfCompilationUnit, int SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_version_stamp>;
2443};
2444template <> struct describe_field_t<SgAsmDwarfCompilationUnit,uint64_t,&SgAsmDwarfCompilationUnit::p_abbrev_offset> {
2446 using field_type = uint64_t;
2447 static constexpr size_t position{5};
2448 static constexpr char const * const name{"abbrev_offset"};
2449 static constexpr char const * const typestr{"uint64_t"};
2450 static constexpr bool traverse{false};
2451 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_abbrev_offset};
2452 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2453 using bind = Desc<SgAsmDwarfCompilationUnit, uint64_t SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_abbrev_offset>;
2454};
2455template <> struct describe_field_t<SgAsmDwarfCompilationUnit,uint64_t,&SgAsmDwarfCompilationUnit::p_address_size> {
2457 using field_type = uint64_t;
2458 static constexpr size_t position{6};
2459 static constexpr char const * const name{"address_size"};
2460 static constexpr char const * const typestr{"uint64_t"};
2461 static constexpr bool traverse{false};
2462 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_address_size};
2463 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2464 using bind = Desc<SgAsmDwarfCompilationUnit, uint64_t SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_address_size>;
2465};
2466template <> struct describe_field_t<SgAsmDwarfCompilationUnit,uint64_t,&SgAsmDwarfCompilationUnit::p_offset_length> {
2468 using field_type = uint64_t;
2469 static constexpr size_t position{7};
2470 static constexpr char const * const name{"offset_length"};
2471 static constexpr char const * const typestr{"uint64_t"};
2472 static constexpr bool traverse{false};
2473 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_offset_length};
2474 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2475 using bind = Desc<SgAsmDwarfCompilationUnit, uint64_t SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_offset_length>;
2476};
2477template <> struct describe_field_t<SgAsmDwarfCompilationUnit,SgAsmDwarfLineList*,&SgAsmDwarfCompilationUnit::p_line_info> {
2480 static constexpr size_t position{8};
2481 static constexpr char const * const name{"line_info"};
2482 static constexpr char const * const typestr{"SgAsmDwarfLineList*"};
2483 static constexpr bool traverse{true};
2484 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_line_info};
2485 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2486 using bind = Desc<SgAsmDwarfCompilationUnit, SgAsmDwarfLineList* SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_line_info>;
2487};
2488template <> struct describe_field_t<SgAsmDwarfCompilationUnit,SgAsmDwarfConstructList*,&SgAsmDwarfCompilationUnit::p_language_constructs> {
2491 static constexpr size_t position{9};
2492 static constexpr char const * const name{"language_constructs"};
2493 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
2494 static constexpr bool traverse{true};
2495 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_language_constructs};
2496 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2497 using bind = Desc<SgAsmDwarfCompilationUnit, SgAsmDwarfConstructList* SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_language_constructs>;
2498};
2499template <> struct describe_field_t<SgAsmDwarfCompilationUnit,SgAsmDwarfMacroList*,&SgAsmDwarfCompilationUnit::p_macro_info> {
2502 static constexpr size_t position{10};
2503 static constexpr char const * const name{"macro_info"};
2504 static constexpr char const * const typestr{"SgAsmDwarfMacroList*"};
2505 static constexpr bool traverse{true};
2506 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnit::p_macro_info};
2507 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2508 using bind = Desc<SgAsmDwarfCompilationUnit, SgAsmDwarfMacroList* SgAsmDwarfCompilationUnit::*, &SgAsmDwarfCompilationUnit::p_macro_info>;
2509};
2519template <> struct node_from_variant_t<83> { using type = SgAsmDwarfCompilationUnit; };
2520
2521// Class: AsmDwarfCompilationUnitList
2522template <> struct describe_field_t<SgAsmDwarfCompilationUnitList,SgAsmDwarfCompilationUnitPtrList,&SgAsmDwarfCompilationUnitList::p_cu_list> {
2524 using field_type = SgAsmDwarfCompilationUnitPtrList;
2525 static constexpr size_t position{0};
2526 static constexpr char const * const name{"cu_list"};
2527 static constexpr char const * const typestr{"SgAsmDwarfCompilationUnitPtrList"};
2528 static constexpr bool traverse{true};
2529 static constexpr auto mbr_ptr{&SgAsmDwarfCompilationUnitList::p_cu_list};
2530 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2531 using bind = Desc<SgAsmDwarfCompilationUnitList, SgAsmDwarfCompilationUnitPtrList SgAsmDwarfCompilationUnitList::*, &SgAsmDwarfCompilationUnitList::p_cu_list>;
2532};
2536 static constexpr char const * const name{"AsmDwarfCompilationUnitList"};
2537 static constexpr unsigned long variant{84};
2538 static constexpr bool concrete{true};
2539 using subclasses_t = mp::List<>;
2541};
2542template <> struct node_from_variant_t<84> { using type = SgAsmDwarfCompilationUnitList; };
2543
2544// Class: AsmDwarfCondition
2546 using node = SgAsmDwarfCondition;
2547 using base = SgAsmDwarfConstruct;
2548 static constexpr char const * const name{"AsmDwarfCondition"};
2549 static constexpr unsigned long variant{85};
2550 static constexpr bool concrete{true};
2551 using subclasses_t = mp::List<>;
2552 using fields_t = mp::List<>;
2553};
2554template <> struct node_from_variant_t<85> { using type = SgAsmDwarfCondition; };
2555
2556// Class: AsmDwarfConstType
2558 using node = SgAsmDwarfConstType;
2559 using base = SgAsmDwarfConstruct;
2560 static constexpr char const * const name{"AsmDwarfConstType"};
2561 static constexpr unsigned long variant{86};
2562 static constexpr bool concrete{true};
2563 using subclasses_t = mp::List<>;
2564 using fields_t = mp::List<>;
2565};
2566template <> struct node_from_variant_t<86> { using type = SgAsmDwarfConstType; };
2567
2568// Class: AsmDwarfConstant
2570 using node = SgAsmDwarfConstant;
2571 using base = SgAsmDwarfConstruct;
2572 static constexpr char const * const name{"AsmDwarfConstant"};
2573 static constexpr unsigned long variant{87};
2574 static constexpr bool concrete{true};
2575 using subclasses_t = mp::List<>;
2576 using fields_t = mp::List<>;
2577};
2578template <> struct node_from_variant_t<87> { using type = SgAsmDwarfConstant; };
2579
2580// Class: AsmDwarfConstruct
2581template <> struct describe_field_t<SgAsmDwarfConstruct,int,&SgAsmDwarfConstruct::p_nesting_level> {
2583 using field_type = int;
2584 static constexpr size_t position{0};
2585 static constexpr char const * const name{"nesting_level"};
2586 static constexpr char const * const typestr{"int"};
2587 static constexpr bool traverse{false};
2588 static constexpr auto mbr_ptr{&SgAsmDwarfConstruct::p_nesting_level};
2589 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2590 using bind = Desc<SgAsmDwarfConstruct, int SgAsmDwarfConstruct::*, &SgAsmDwarfConstruct::p_nesting_level>;
2591};
2592template <> struct describe_field_t<SgAsmDwarfConstruct,uint64_t,&SgAsmDwarfConstruct::p_offset> {
2594 using field_type = uint64_t;
2595 static constexpr size_t position{1};
2596 static constexpr char const * const name{"offset"};
2597 static constexpr char const * const typestr{"uint64_t"};
2598 static constexpr bool traverse{false};
2599 static constexpr auto mbr_ptr{&SgAsmDwarfConstruct::p_offset};
2600 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2601 using bind = Desc<SgAsmDwarfConstruct, uint64_t SgAsmDwarfConstruct::*, &SgAsmDwarfConstruct::p_offset>;
2602};
2603template <> struct describe_field_t<SgAsmDwarfConstruct,uint64_t,&SgAsmDwarfConstruct::p_overall_offset> {
2605 using field_type = uint64_t;
2606 static constexpr size_t position{2};
2607 static constexpr char const * const name{"overall_offset"};
2608 static constexpr char const * const typestr{"uint64_t"};
2609 static constexpr bool traverse{false};
2610 static constexpr auto mbr_ptr{&SgAsmDwarfConstruct::p_overall_offset};
2611 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2612 using bind = Desc<SgAsmDwarfConstruct, uint64_t SgAsmDwarfConstruct::*, &SgAsmDwarfConstruct::p_overall_offset>;
2613};
2614template <> struct describe_field_t<SgAsmDwarfConstruct,std::string,&SgAsmDwarfConstruct::p_name> {
2616 using field_type = std::string;
2617 static constexpr size_t position{3};
2618 static constexpr char const * const name{"name"};
2619 static constexpr char const * const typestr{"std::string"};
2620 static constexpr bool traverse{false};
2621 static constexpr auto mbr_ptr{&SgAsmDwarfConstruct::p_name};
2622 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2623 using bind = Desc<SgAsmDwarfConstruct, std::string SgAsmDwarfConstruct::*, &SgAsmDwarfConstruct::p_name>;
2624};
2625template <> struct describe_field_t<SgAsmDwarfConstruct,SgAsmDwarfLine*,&SgAsmDwarfConstruct::p_source_position> {
2627 using field_type = SgAsmDwarfLine*;
2628 static constexpr size_t position{4};
2629 static constexpr char const * const name{"source_position"};
2630 static constexpr char const * const typestr{"SgAsmDwarfLine*"};
2631 static constexpr bool traverse{false};
2632 static constexpr auto mbr_ptr{&SgAsmDwarfConstruct::p_source_position};
2633 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2634 using bind = Desc<SgAsmDwarfConstruct, SgAsmDwarfLine* SgAsmDwarfConstruct::*, &SgAsmDwarfConstruct::p_source_position>;
2635};
2637 using node = SgAsmDwarfConstruct;
2639 static constexpr char const * const name{"AsmDwarfConstruct"};
2640 static constexpr unsigned long variant{88};
2641 static constexpr bool concrete{false};
2642 using subclasses_t = mp::List<SgAsmDwarfAccessDeclaration, SgAsmDwarfArrayType, SgAsmDwarfBaseType, SgAsmDwarfCatchBlock, SgAsmDwarfClassTemplate, SgAsmDwarfClassType, SgAsmDwarfCommonBlock, SgAsmDwarfCommonInclusion, SgAsmDwarfCompilationUnit, SgAsmDwarfCondition, SgAsmDwarfConstant, SgAsmDwarfConstType, SgAsmDwarfDwarfProcedure, SgAsmDwarfEntryPoint, SgAsmDwarfEnumerationType, SgAsmDwarfEnumerator, SgAsmDwarfFileType, SgAsmDwarfFormalParameter, SgAsmDwarfFormatLabel, SgAsmDwarfFriend, SgAsmDwarfFunctionTemplate, SgAsmDwarfImportedDeclaration, SgAsmDwarfImportedModule, SgAsmDwarfImportedUnit, SgAsmDwarfInheritance, SgAsmDwarfInlinedSubroutine, SgAsmDwarfInterfaceType, SgAsmDwarfLabel, SgAsmDwarfLexicalBlock, SgAsmDwarfMember, SgAsmDwarfModule, SgAsmDwarfMutableType, SgAsmDwarfNamelist, SgAsmDwarfNamelistItem, SgAsmDwarfNamespace, SgAsmDwarfPackedType, SgAsmDwarfPartialUnit, SgAsmDwarfPointerType, SgAsmDwarfPtrToMemberType, SgAsmDwarfReferenceType, SgAsmDwarfRestrictType, SgAsmDwarfSetType, SgAsmDwarfSharedType, SgAsmDwarfStringType, SgAsmDwarfStructureType, SgAsmDwarfSubprogram, SgAsmDwarfSubrangeType, SgAsmDwarfSubroutineType, SgAsmDwarfTemplateTypeParameter, SgAsmDwarfTemplateValueParameter, SgAsmDwarfThrownType, SgAsmDwarfTryBlock, SgAsmDwarfTypedef, SgAsmDwarfUnionType, SgAsmDwarfUnknownConstruct, SgAsmDwarfUnspecifiedParameters, SgAsmDwarfUnspecifiedType, SgAsmDwarfUpcRelaxedType, SgAsmDwarfUpcSharedType, SgAsmDwarfUpcStrictType, SgAsmDwarfVariable, SgAsmDwarfVariant, SgAsmDwarfVariantPart, SgAsmDwarfVolatileType, SgAsmDwarfWithStmt>;
2644};
2645template <> struct node_from_variant_t<88> { using type = SgAsmDwarfConstruct; };
2646
2647// Class: AsmDwarfConstructList
2648template <> struct describe_field_t<SgAsmDwarfConstructList,SgAsmDwarfConstructPtrList,&SgAsmDwarfConstructList::p_list> {
2650 using field_type = SgAsmDwarfConstructPtrList;
2651 static constexpr size_t position{0};
2652 static constexpr char const * const name{"list"};
2653 static constexpr char const * const typestr{"SgAsmDwarfConstructPtrList"};
2654 static constexpr bool traverse{true};
2655 static constexpr auto mbr_ptr{&SgAsmDwarfConstructList::p_list};
2656 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2657 using bind = Desc<SgAsmDwarfConstructList, SgAsmDwarfConstructPtrList SgAsmDwarfConstructList::*, &SgAsmDwarfConstructList::p_list>;
2658};
2662 static constexpr char const * const name{"AsmDwarfConstructList"};
2663 static constexpr unsigned long variant{89};
2664 static constexpr bool concrete{true};
2665 using subclasses_t = mp::List<>;
2667};
2668template <> struct node_from_variant_t<89> { using type = SgAsmDwarfConstructList; };
2669
2670// Class: AsmDwarfDwarfProcedure
2673 using base = SgAsmDwarfConstruct;
2674 static constexpr char const * const name{"AsmDwarfDwarfProcedure"};
2675 static constexpr unsigned long variant{90};
2676 static constexpr bool concrete{true};
2677 using subclasses_t = mp::List<>;
2678 using fields_t = mp::List<>;
2679};
2680template <> struct node_from_variant_t<90> { using type = SgAsmDwarfDwarfProcedure; };
2681
2682// Class: AsmDwarfEntryPoint
2684 using node = SgAsmDwarfEntryPoint;
2685 using base = SgAsmDwarfConstruct;
2686 static constexpr char const * const name{"AsmDwarfEntryPoint"};
2687 static constexpr unsigned long variant{91};
2688 static constexpr bool concrete{true};
2689 using subclasses_t = mp::List<>;
2690 using fields_t = mp::List<>;
2691};
2692template <> struct node_from_variant_t<91> { using type = SgAsmDwarfEntryPoint; };
2693
2694// Class: AsmDwarfEnumerationType
2695template <> struct describe_field_t<SgAsmDwarfEnumerationType,SgAsmDwarfConstructList*,&SgAsmDwarfEnumerationType::p_body> {
2698 static constexpr size_t position{0};
2699 static constexpr char const * const name{"body"};
2700 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
2701 static constexpr bool traverse{true};
2702 static constexpr auto mbr_ptr{&SgAsmDwarfEnumerationType::p_body};
2703 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2704 using bind = Desc<SgAsmDwarfEnumerationType, SgAsmDwarfConstructList* SgAsmDwarfEnumerationType::*, &SgAsmDwarfEnumerationType::p_body>;
2705};
2708 using base = SgAsmDwarfConstruct;
2709 static constexpr char const * const name{"AsmDwarfEnumerationType"};
2710 static constexpr unsigned long variant{92};
2711 static constexpr bool concrete{true};
2712 using subclasses_t = mp::List<>;
2714};
2715template <> struct node_from_variant_t<92> { using type = SgAsmDwarfEnumerationType; };
2716
2717// Class: AsmDwarfEnumerator
2719 using node = SgAsmDwarfEnumerator;
2720 using base = SgAsmDwarfConstruct;
2721 static constexpr char const * const name{"AsmDwarfEnumerator"};
2722 static constexpr unsigned long variant{93};
2723 static constexpr bool concrete{true};
2724 using subclasses_t = mp::List<>;
2725 using fields_t = mp::List<>;
2726};
2727template <> struct node_from_variant_t<93> { using type = SgAsmDwarfEnumerator; };
2728
2729// Class: AsmDwarfFileType
2731 using node = SgAsmDwarfFileType;
2732 using base = SgAsmDwarfConstruct;
2733 static constexpr char const * const name{"AsmDwarfFileType"};
2734 static constexpr unsigned long variant{94};
2735 static constexpr bool concrete{true};
2736 using subclasses_t = mp::List<>;
2737 using fields_t = mp::List<>;
2738};
2739template <> struct node_from_variant_t<94> { using type = SgAsmDwarfFileType; };
2740
2741// Class: AsmDwarfFormalParameter
2744 using base = SgAsmDwarfConstruct;
2745 static constexpr char const * const name{"AsmDwarfFormalParameter"};
2746 static constexpr unsigned long variant{95};
2747 static constexpr bool concrete{true};
2748 using subclasses_t = mp::List<>;
2749 using fields_t = mp::List<>;
2750};
2751template <> struct node_from_variant_t<95> { using type = SgAsmDwarfFormalParameter; };
2752
2753// Class: AsmDwarfFormatLabel
2756 using base = SgAsmDwarfConstruct;
2757 static constexpr char const * const name{"AsmDwarfFormatLabel"};
2758 static constexpr unsigned long variant{96};
2759 static constexpr bool concrete{true};
2760 using subclasses_t = mp::List<>;
2761 using fields_t = mp::List<>;
2762};
2763template <> struct node_from_variant_t<96> { using type = SgAsmDwarfFormatLabel; };
2764
2765// Class: AsmDwarfFriend
2767 using node = SgAsmDwarfFriend;
2768 using base = SgAsmDwarfConstruct;
2769 static constexpr char const * const name{"AsmDwarfFriend"};
2770 static constexpr unsigned long variant{97};
2771 static constexpr bool concrete{true};
2772 using subclasses_t = mp::List<>;
2773 using fields_t = mp::List<>;
2774};
2775template <> struct node_from_variant_t<97> { using type = SgAsmDwarfFriend; };
2776
2777// Class: AsmDwarfFunctionTemplate
2780 using base = SgAsmDwarfConstruct;
2781 static constexpr char const * const name{"AsmDwarfFunctionTemplate"};
2782 static constexpr unsigned long variant{98};
2783 static constexpr bool concrete{true};
2784 using subclasses_t = mp::List<>;
2785 using fields_t = mp::List<>;
2786};
2787template <> struct node_from_variant_t<98> { using type = SgAsmDwarfFunctionTemplate; };
2788
2789// Class: AsmDwarfImportedDeclaration
2792 using base = SgAsmDwarfConstruct;
2793 static constexpr char const * const name{"AsmDwarfImportedDeclaration"};
2794 static constexpr unsigned long variant{99};
2795 static constexpr bool concrete{true};
2796 using subclasses_t = mp::List<>;
2797 using fields_t = mp::List<>;
2798};
2799template <> struct node_from_variant_t<99> { using type = SgAsmDwarfImportedDeclaration; };
2800
2801// Class: AsmDwarfImportedModule
2804 using base = SgAsmDwarfConstruct;
2805 static constexpr char const * const name{"AsmDwarfImportedModule"};
2806 static constexpr unsigned long variant{100};
2807 static constexpr bool concrete{true};
2808 using subclasses_t = mp::List<>;
2809 using fields_t = mp::List<>;
2810};
2811template <> struct node_from_variant_t<100> { using type = SgAsmDwarfImportedModule; };
2812
2813// Class: AsmDwarfImportedUnit
2816 using base = SgAsmDwarfConstruct;
2817 static constexpr char const * const name{"AsmDwarfImportedUnit"};
2818 static constexpr unsigned long variant{101};
2819 static constexpr bool concrete{true};
2820 using subclasses_t = mp::List<>;
2821 using fields_t = mp::List<>;
2822};
2823template <> struct node_from_variant_t<101> { using type = SgAsmDwarfImportedUnit; };
2824
2825// Class: AsmDwarfInformation
2829 static constexpr char const * const name{"AsmDwarfInformation"};
2830 static constexpr unsigned long variant{102};
2831 static constexpr bool concrete{false};
2833 using fields_t = mp::List<>;
2834};
2835template <> struct node_from_variant_t<102> { using type = SgAsmDwarfInformation; };
2836
2837// Class: AsmDwarfInheritance
2840 using base = SgAsmDwarfConstruct;
2841 static constexpr char const * const name{"AsmDwarfInheritance"};
2842 static constexpr unsigned long variant{103};
2843 static constexpr bool concrete{true};
2844 using subclasses_t = mp::List<>;
2845 using fields_t = mp::List<>;
2846};
2847template <> struct node_from_variant_t<103> { using type = SgAsmDwarfInheritance; };
2848
2849// Class: AsmDwarfInlinedSubroutine
2850template <> struct describe_field_t<SgAsmDwarfInlinedSubroutine,SgAsmDwarfConstructList*,&SgAsmDwarfInlinedSubroutine::p_body> {
2853 static constexpr size_t position{0};
2854 static constexpr char const * const name{"body"};
2855 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
2856 static constexpr bool traverse{true};
2857 static constexpr auto mbr_ptr{&SgAsmDwarfInlinedSubroutine::p_body};
2858 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2859 using bind = Desc<SgAsmDwarfInlinedSubroutine, SgAsmDwarfConstructList* SgAsmDwarfInlinedSubroutine::*, &SgAsmDwarfInlinedSubroutine::p_body>;
2860};
2863 using base = SgAsmDwarfConstruct;
2864 static constexpr char const * const name{"AsmDwarfInlinedSubroutine"};
2865 static constexpr unsigned long variant{104};
2866 static constexpr bool concrete{true};
2867 using subclasses_t = mp::List<>;
2869};
2870template <> struct node_from_variant_t<104> { using type = SgAsmDwarfInlinedSubroutine; };
2871
2872// Class: AsmDwarfInterfaceType
2875 using base = SgAsmDwarfConstruct;
2876 static constexpr char const * const name{"AsmDwarfInterfaceType"};
2877 static constexpr unsigned long variant{105};
2878 static constexpr bool concrete{true};
2879 using subclasses_t = mp::List<>;
2880 using fields_t = mp::List<>;
2881};
2882template <> struct node_from_variant_t<105> { using type = SgAsmDwarfInterfaceType; };
2883
2884// Class: AsmDwarfLabel
2886 using node = SgAsmDwarfLabel;
2887 using base = SgAsmDwarfConstruct;
2888 static constexpr char const * const name{"AsmDwarfLabel"};
2889 static constexpr unsigned long variant{106};
2890 static constexpr bool concrete{true};
2891 using subclasses_t = mp::List<>;
2892 using fields_t = mp::List<>;
2893};
2894template <> struct node_from_variant_t<106> { using type = SgAsmDwarfLabel; };
2895
2896// Class: AsmDwarfLexicalBlock
2897template <> struct describe_field_t<SgAsmDwarfLexicalBlock,SgAsmDwarfConstructList*,&SgAsmDwarfLexicalBlock::p_body> {
2900 static constexpr size_t position{0};
2901 static constexpr char const * const name{"body"};
2902 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
2903 static constexpr bool traverse{true};
2904 static constexpr auto mbr_ptr{&SgAsmDwarfLexicalBlock::p_body};
2905 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2906 using bind = Desc<SgAsmDwarfLexicalBlock, SgAsmDwarfConstructList* SgAsmDwarfLexicalBlock::*, &SgAsmDwarfLexicalBlock::p_body>;
2907};
2910 using base = SgAsmDwarfConstruct;
2911 static constexpr char const * const name{"AsmDwarfLexicalBlock"};
2912 static constexpr unsigned long variant{107};
2913 static constexpr bool concrete{true};
2914 using subclasses_t = mp::List<>;
2916};
2917template <> struct node_from_variant_t<107> { using type = SgAsmDwarfLexicalBlock; };
2918
2919// Class: AsmDwarfLine
2920template <> struct describe_field_t<SgAsmDwarfLine,uint64_t,&SgAsmDwarfLine::p_address> {
2921 using parent = SgAsmDwarfLine;
2922 using field_type = uint64_t;
2923 static constexpr size_t position{0};
2924 static constexpr char const * const name{"address"};
2925 static constexpr char const * const typestr{"uint64_t"};
2926 static constexpr bool traverse{false};
2927 static constexpr auto mbr_ptr{&SgAsmDwarfLine::p_address};
2928 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2929 using bind = Desc<SgAsmDwarfLine, uint64_t SgAsmDwarfLine::*, &SgAsmDwarfLine::p_address>;
2930};
2931template <> struct describe_field_t<SgAsmDwarfLine,int,&SgAsmDwarfLine::p_file_id> {
2932 using parent = SgAsmDwarfLine;
2933 using field_type = int;
2934 static constexpr size_t position{1};
2935 static constexpr char const * const name{"file_id"};
2936 static constexpr char const * const typestr{"int"};
2937 static constexpr bool traverse{false};
2938 static constexpr auto mbr_ptr{&SgAsmDwarfLine::p_file_id};
2939 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2940 using bind = Desc<SgAsmDwarfLine, int SgAsmDwarfLine::*, &SgAsmDwarfLine::p_file_id>;
2941};
2942template <> struct describe_field_t<SgAsmDwarfLine,int,&SgAsmDwarfLine::p_line> {
2943 using parent = SgAsmDwarfLine;
2944 using field_type = int;
2945 static constexpr size_t position{2};
2946 static constexpr char const * const name{"line"};
2947 static constexpr char const * const typestr{"int"};
2948 static constexpr bool traverse{false};
2949 static constexpr auto mbr_ptr{&SgAsmDwarfLine::p_line};
2950 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2951 using bind = Desc<SgAsmDwarfLine, int SgAsmDwarfLine::*, &SgAsmDwarfLine::p_line>;
2952};
2953template <> struct describe_field_t<SgAsmDwarfLine,int,&SgAsmDwarfLine::p_column> {
2954 using parent = SgAsmDwarfLine;
2955 using field_type = int;
2956 static constexpr size_t position{3};
2957 static constexpr char const * const name{"column"};
2958 static constexpr char const * const typestr{"int"};
2959 static constexpr bool traverse{false};
2960 static constexpr auto mbr_ptr{&SgAsmDwarfLine::p_column};
2961 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2962 using bind = Desc<SgAsmDwarfLine, int SgAsmDwarfLine::*, &SgAsmDwarfLine::p_column>;
2963};
2964template <> struct describe_node_t<SgAsmDwarfLine> {
2965 using node = SgAsmDwarfLine;
2967 static constexpr char const * const name{"AsmDwarfLine"};
2968 static constexpr unsigned long variant{108};
2969 static constexpr bool concrete{true};
2970 using subclasses_t = mp::List<>;
2972};
2973template <> struct node_from_variant_t<108> { using type = SgAsmDwarfLine; };
2974
2975// Class: AsmDwarfLineList
2976template <> struct describe_field_t<SgAsmDwarfLineList,SgAsmDwarfLinePtrList,&SgAsmDwarfLineList::p_line_list> {
2977 using parent = SgAsmDwarfLineList;
2978 using field_type = SgAsmDwarfLinePtrList;
2979 static constexpr size_t position{0};
2980 static constexpr char const * const name{"line_list"};
2981 static constexpr char const * const typestr{"SgAsmDwarfLinePtrList"};
2982 static constexpr bool traverse{true};
2983 static constexpr auto mbr_ptr{&SgAsmDwarfLineList::p_line_list};
2984 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
2985 using bind = Desc<SgAsmDwarfLineList, SgAsmDwarfLinePtrList SgAsmDwarfLineList::*, &SgAsmDwarfLineList::p_line_list>;
2986};
2988 using node = SgAsmDwarfLineList;
2990 static constexpr char const * const name{"AsmDwarfLineList"};
2991 static constexpr unsigned long variant{109};
2992 static constexpr bool concrete{true};
2993 using subclasses_t = mp::List<>;
2995};
2996template <> struct node_from_variant_t<109> { using type = SgAsmDwarfLineList; };
2997
2998// Class: AsmDwarfMacro
2999template <> struct describe_field_t<SgAsmDwarfMacro,std::string,&SgAsmDwarfMacro::p_macro_string> {
3000 using parent = SgAsmDwarfMacro;
3001 using field_type = std::string;
3002 static constexpr size_t position{0};
3003 static constexpr char const * const name{"macro_string"};
3004 static constexpr char const * const typestr{"std::string"};
3005 static constexpr bool traverse{false};
3006 static constexpr auto mbr_ptr{&SgAsmDwarfMacro::p_macro_string};
3007 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3008 using bind = Desc<SgAsmDwarfMacro, std::string SgAsmDwarfMacro::*, &SgAsmDwarfMacro::p_macro_string>;
3009};
3011 using node = SgAsmDwarfMacro;
3013 static constexpr char const * const name{"AsmDwarfMacro"};
3014 static constexpr unsigned long variant{110};
3015 static constexpr bool concrete{true};
3016 using subclasses_t = mp::List<>;
3018};
3019template <> struct node_from_variant_t<110> { using type = SgAsmDwarfMacro; };
3020
3021// Class: AsmDwarfMacroList
3022template <> struct describe_field_t<SgAsmDwarfMacroList,SgAsmDwarfMacroPtrList,&SgAsmDwarfMacroList::p_macro_list> {
3024 using field_type = SgAsmDwarfMacroPtrList;
3025 static constexpr size_t position{0};
3026 static constexpr char const * const name{"macro_list"};
3027 static constexpr char const * const typestr{"SgAsmDwarfMacroPtrList"};
3028 static constexpr bool traverse{true};
3029 static constexpr auto mbr_ptr{&SgAsmDwarfMacroList::p_macro_list};
3030 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3031 using bind = Desc<SgAsmDwarfMacroList, SgAsmDwarfMacroPtrList SgAsmDwarfMacroList::*, &SgAsmDwarfMacroList::p_macro_list>;
3032};
3034 using node = SgAsmDwarfMacroList;
3036 static constexpr char const * const name{"AsmDwarfMacroList"};
3037 static constexpr unsigned long variant{111};
3038 static constexpr bool concrete{true};
3039 using subclasses_t = mp::List<>;
3041};
3042template <> struct node_from_variant_t<111> { using type = SgAsmDwarfMacroList; };
3043
3044// Class: AsmDwarfMember
3046 using node = SgAsmDwarfMember;
3047 using base = SgAsmDwarfConstruct;
3048 static constexpr char const * const name{"AsmDwarfMember"};
3049 static constexpr unsigned long variant{112};
3050 static constexpr bool concrete{true};
3051 using subclasses_t = mp::List<>;
3052 using fields_t = mp::List<>;
3053};
3054template <> struct node_from_variant_t<112> { using type = SgAsmDwarfMember; };
3055
3056// Class: AsmDwarfModule
3058 using node = SgAsmDwarfModule;
3059 using base = SgAsmDwarfConstruct;
3060 static constexpr char const * const name{"AsmDwarfModule"};
3061 static constexpr unsigned long variant{113};
3062 static constexpr bool concrete{true};
3063 using subclasses_t = mp::List<>;
3064 using fields_t = mp::List<>;
3065};
3066template <> struct node_from_variant_t<113> { using type = SgAsmDwarfModule; };
3067
3068// Class: AsmDwarfMutableType
3071 using base = SgAsmDwarfConstruct;
3072 static constexpr char const * const name{"AsmDwarfMutableType"};
3073 static constexpr unsigned long variant{114};
3074 static constexpr bool concrete{true};
3075 using subclasses_t = mp::List<>;
3076 using fields_t = mp::List<>;
3077};
3078template <> struct node_from_variant_t<114> { using type = SgAsmDwarfMutableType; };
3079
3080// Class: AsmDwarfNamelist
3082 using node = SgAsmDwarfNamelist;
3083 using base = SgAsmDwarfConstruct;
3084 static constexpr char const * const name{"AsmDwarfNamelist"};
3085 static constexpr unsigned long variant{115};
3086 static constexpr bool concrete{true};
3087 using subclasses_t = mp::List<>;
3088 using fields_t = mp::List<>;
3089};
3090template <> struct node_from_variant_t<115> { using type = SgAsmDwarfNamelist; };
3091
3092// Class: AsmDwarfNamelistItem
3095 using base = SgAsmDwarfConstruct;
3096 static constexpr char const * const name{"AsmDwarfNamelistItem"};
3097 static constexpr unsigned long variant{116};
3098 static constexpr bool concrete{true};
3099 using subclasses_t = mp::List<>;
3100 using fields_t = mp::List<>;
3101};
3102template <> struct node_from_variant_t<116> { using type = SgAsmDwarfNamelistItem; };
3103
3104// Class: AsmDwarfNamespace
3105template <> struct describe_field_t<SgAsmDwarfNamespace,SgAsmDwarfConstructList*,&SgAsmDwarfNamespace::p_body> {
3108 static constexpr size_t position{0};
3109 static constexpr char const * const name{"body"};
3110 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
3111 static constexpr bool traverse{true};
3112 static constexpr auto mbr_ptr{&SgAsmDwarfNamespace::p_body};
3113 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3114 using bind = Desc<SgAsmDwarfNamespace, SgAsmDwarfConstructList* SgAsmDwarfNamespace::*, &SgAsmDwarfNamespace::p_body>;
3115};
3117 using node = SgAsmDwarfNamespace;
3118 using base = SgAsmDwarfConstruct;
3119 static constexpr char const * const name{"AsmDwarfNamespace"};
3120 static constexpr unsigned long variant{117};
3121 static constexpr bool concrete{true};
3122 using subclasses_t = mp::List<>;
3124};
3125template <> struct node_from_variant_t<117> { using type = SgAsmDwarfNamespace; };
3126
3127// Class: AsmDwarfPackedType
3129 using node = SgAsmDwarfPackedType;
3130 using base = SgAsmDwarfConstruct;
3131 static constexpr char const * const name{"AsmDwarfPackedType"};
3132 static constexpr unsigned long variant{118};
3133 static constexpr bool concrete{true};
3134 using subclasses_t = mp::List<>;
3135 using fields_t = mp::List<>;
3136};
3137template <> struct node_from_variant_t<118> { using type = SgAsmDwarfPackedType; };
3138
3139// Class: AsmDwarfPartialUnit
3142 using base = SgAsmDwarfConstruct;
3143 static constexpr char const * const name{"AsmDwarfPartialUnit"};
3144 static constexpr unsigned long variant{119};
3145 static constexpr bool concrete{true};
3146 using subclasses_t = mp::List<>;
3147 using fields_t = mp::List<>;
3148};
3149template <> struct node_from_variant_t<119> { using type = SgAsmDwarfPartialUnit; };
3150
3151// Class: AsmDwarfPointerType
3154 using base = SgAsmDwarfConstruct;
3155 static constexpr char const * const name{"AsmDwarfPointerType"};
3156 static constexpr unsigned long variant{120};
3157 static constexpr bool concrete{true};
3158 using subclasses_t = mp::List<>;
3159 using fields_t = mp::List<>;
3160};
3161template <> struct node_from_variant_t<120> { using type = SgAsmDwarfPointerType; };
3162
3163// Class: AsmDwarfPtrToMemberType
3166 using base = SgAsmDwarfConstruct;
3167 static constexpr char const * const name{"AsmDwarfPtrToMemberType"};
3168 static constexpr unsigned long variant{121};
3169 static constexpr bool concrete{true};
3170 using subclasses_t = mp::List<>;
3171 using fields_t = mp::List<>;
3172};
3173template <> struct node_from_variant_t<121> { using type = SgAsmDwarfPtrToMemberType; };
3174
3175// Class: AsmDwarfReferenceType
3178 using base = SgAsmDwarfConstruct;
3179 static constexpr char const * const name{"AsmDwarfReferenceType"};
3180 static constexpr unsigned long variant{122};
3181 static constexpr bool concrete{true};
3182 using subclasses_t = mp::List<>;
3183 using fields_t = mp::List<>;
3184};
3185template <> struct node_from_variant_t<122> { using type = SgAsmDwarfReferenceType; };
3186
3187// Class: AsmDwarfRestrictType
3190 using base = SgAsmDwarfConstruct;
3191 static constexpr char const * const name{"AsmDwarfRestrictType"};
3192 static constexpr unsigned long variant{123};
3193 static constexpr bool concrete{true};
3194 using subclasses_t = mp::List<>;
3195 using fields_t = mp::List<>;
3196};
3197template <> struct node_from_variant_t<123> { using type = SgAsmDwarfRestrictType; };
3198
3199// Class: AsmDwarfSetType
3201 using node = SgAsmDwarfSetType;
3202 using base = SgAsmDwarfConstruct;
3203 static constexpr char const * const name{"AsmDwarfSetType"};
3204 static constexpr unsigned long variant{124};
3205 static constexpr bool concrete{true};
3206 using subclasses_t = mp::List<>;
3207 using fields_t = mp::List<>;
3208};
3209template <> struct node_from_variant_t<124> { using type = SgAsmDwarfSetType; };
3210
3211// Class: AsmDwarfSharedType
3213 using node = SgAsmDwarfSharedType;
3214 using base = SgAsmDwarfConstruct;
3215 static constexpr char const * const name{"AsmDwarfSharedType"};
3216 static constexpr unsigned long variant{125};
3217 static constexpr bool concrete{true};
3218 using subclasses_t = mp::List<>;
3219 using fields_t = mp::List<>;
3220};
3221template <> struct node_from_variant_t<125> { using type = SgAsmDwarfSharedType; };
3222
3223// Class: AsmDwarfStringType
3225 using node = SgAsmDwarfStringType;
3226 using base = SgAsmDwarfConstruct;
3227 static constexpr char const * const name{"AsmDwarfStringType"};
3228 static constexpr unsigned long variant{126};
3229 static constexpr bool concrete{true};
3230 using subclasses_t = mp::List<>;
3231 using fields_t = mp::List<>;
3232};
3233template <> struct node_from_variant_t<126> { using type = SgAsmDwarfStringType; };
3234
3235// Class: AsmDwarfStructureType
3236template <> struct describe_field_t<SgAsmDwarfStructureType,SgAsmDwarfConstructList*,&SgAsmDwarfStructureType::p_body> {
3239 static constexpr size_t position{0};
3240 static constexpr char const * const name{"body"};
3241 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
3242 static constexpr bool traverse{true};
3243 static constexpr auto mbr_ptr{&SgAsmDwarfStructureType::p_body};
3244 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3245 using bind = Desc<SgAsmDwarfStructureType, SgAsmDwarfConstructList* SgAsmDwarfStructureType::*, &SgAsmDwarfStructureType::p_body>;
3246};
3249 using base = SgAsmDwarfConstruct;
3250 static constexpr char const * const name{"AsmDwarfStructureType"};
3251 static constexpr unsigned long variant{127};
3252 static constexpr bool concrete{true};
3253 using subclasses_t = mp::List<>;
3255};
3256template <> struct node_from_variant_t<127> { using type = SgAsmDwarfStructureType; };
3257
3258// Class: AsmDwarfSubprogram
3259template <> struct describe_field_t<SgAsmDwarfSubprogram,SgAsmDwarfConstructList*,&SgAsmDwarfSubprogram::p_body> {
3262 static constexpr size_t position{0};
3263 static constexpr char const * const name{"body"};
3264 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
3265 static constexpr bool traverse{true};
3266 static constexpr auto mbr_ptr{&SgAsmDwarfSubprogram::p_body};
3267 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3268 using bind = Desc<SgAsmDwarfSubprogram, SgAsmDwarfConstructList* SgAsmDwarfSubprogram::*, &SgAsmDwarfSubprogram::p_body>;
3269};
3271 using node = SgAsmDwarfSubprogram;
3272 using base = SgAsmDwarfConstruct;
3273 static constexpr char const * const name{"AsmDwarfSubprogram"};
3274 static constexpr unsigned long variant{128};
3275 static constexpr bool concrete{true};
3276 using subclasses_t = mp::List<>;
3278};
3279template <> struct node_from_variant_t<128> { using type = SgAsmDwarfSubprogram; };
3280
3281// Class: AsmDwarfSubrangeType
3284 using base = SgAsmDwarfConstruct;
3285 static constexpr char const * const name{"AsmDwarfSubrangeType"};
3286 static constexpr unsigned long variant{129};
3287 static constexpr bool concrete{true};
3288 using subclasses_t = mp::List<>;
3289 using fields_t = mp::List<>;
3290};
3291template <> struct node_from_variant_t<129> { using type = SgAsmDwarfSubrangeType; };
3292
3293// Class: AsmDwarfSubroutineType
3294template <> struct describe_field_t<SgAsmDwarfSubroutineType,SgAsmDwarfConstructList*,&SgAsmDwarfSubroutineType::p_body> {
3297 static constexpr size_t position{0};
3298 static constexpr char const * const name{"body"};
3299 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
3300 static constexpr bool traverse{true};
3301 static constexpr auto mbr_ptr{&SgAsmDwarfSubroutineType::p_body};
3302 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3303 using bind = Desc<SgAsmDwarfSubroutineType, SgAsmDwarfConstructList* SgAsmDwarfSubroutineType::*, &SgAsmDwarfSubroutineType::p_body>;
3304};
3307 using base = SgAsmDwarfConstruct;
3308 static constexpr char const * const name{"AsmDwarfSubroutineType"};
3309 static constexpr unsigned long variant{130};
3310 static constexpr bool concrete{true};
3311 using subclasses_t = mp::List<>;
3313};
3314template <> struct node_from_variant_t<130> { using type = SgAsmDwarfSubroutineType; };
3315
3316// Class: AsmDwarfTemplateTypeParameter
3319 using base = SgAsmDwarfConstruct;
3320 static constexpr char const * const name{"AsmDwarfTemplateTypeParameter"};
3321 static constexpr unsigned long variant{131};
3322 static constexpr bool concrete{true};
3323 using subclasses_t = mp::List<>;
3324 using fields_t = mp::List<>;
3325};
3326template <> struct node_from_variant_t<131> { using type = SgAsmDwarfTemplateTypeParameter; };
3327
3328// Class: AsmDwarfTemplateValueParameter
3331 using base = SgAsmDwarfConstruct;
3332 static constexpr char const * const name{"AsmDwarfTemplateValueParameter"};
3333 static constexpr unsigned long variant{132};
3334 static constexpr bool concrete{true};
3335 using subclasses_t = mp::List<>;
3336 using fields_t = mp::List<>;
3337};
3338template <> struct node_from_variant_t<132> { using type = SgAsmDwarfTemplateValueParameter; };
3339
3340// Class: AsmDwarfThrownType
3342 using node = SgAsmDwarfThrownType;
3343 using base = SgAsmDwarfConstruct;
3344 static constexpr char const * const name{"AsmDwarfThrownType"};
3345 static constexpr unsigned long variant{133};
3346 static constexpr bool concrete{true};
3347 using subclasses_t = mp::List<>;
3348 using fields_t = mp::List<>;
3349};
3350template <> struct node_from_variant_t<133> { using type = SgAsmDwarfThrownType; };
3351
3352// Class: AsmDwarfTryBlock
3354 using node = SgAsmDwarfTryBlock;
3355 using base = SgAsmDwarfConstruct;
3356 static constexpr char const * const name{"AsmDwarfTryBlock"};
3357 static constexpr unsigned long variant{134};
3358 static constexpr bool concrete{true};
3359 using subclasses_t = mp::List<>;
3360 using fields_t = mp::List<>;
3361};
3362template <> struct node_from_variant_t<134> { using type = SgAsmDwarfTryBlock; };
3363
3364// Class: AsmDwarfTypedef
3366 using node = SgAsmDwarfTypedef;
3367 using base = SgAsmDwarfConstruct;
3368 static constexpr char const * const name{"AsmDwarfTypedef"};
3369 static constexpr unsigned long variant{135};
3370 static constexpr bool concrete{true};
3371 using subclasses_t = mp::List<>;
3372 using fields_t = mp::List<>;
3373};
3374template <> struct node_from_variant_t<135> { using type = SgAsmDwarfTypedef; };
3375
3376// Class: AsmDwarfUnionType
3377template <> struct describe_field_t<SgAsmDwarfUnionType,SgAsmDwarfConstructList*,&SgAsmDwarfUnionType::p_body> {
3380 static constexpr size_t position{0};
3381 static constexpr char const * const name{"body"};
3382 static constexpr char const * const typestr{"SgAsmDwarfConstructList*"};
3383 static constexpr bool traverse{true};
3384 static constexpr auto mbr_ptr{&SgAsmDwarfUnionType::p_body};
3385 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3386 using bind = Desc<SgAsmDwarfUnionType, SgAsmDwarfConstructList* SgAsmDwarfUnionType::*, &SgAsmDwarfUnionType::p_body>;
3387};
3389 using node = SgAsmDwarfUnionType;
3390 using base = SgAsmDwarfConstruct;
3391 static constexpr char const * const name{"AsmDwarfUnionType"};
3392 static constexpr unsigned long variant{136};
3393 static constexpr bool concrete{true};
3394 using subclasses_t = mp::List<>;
3396};
3397template <> struct node_from_variant_t<136> { using type = SgAsmDwarfUnionType; };
3398
3399// Class: AsmDwarfUnknownConstruct
3402 using base = SgAsmDwarfConstruct;
3403 static constexpr char const * const name{"AsmDwarfUnknownConstruct"};
3404 static constexpr unsigned long variant{137};
3405 static constexpr bool concrete{true};
3406 using subclasses_t = mp::List<>;
3407 using fields_t = mp::List<>;
3408};
3409template <> struct node_from_variant_t<137> { using type = SgAsmDwarfUnknownConstruct; };
3410
3411// Class: AsmDwarfUnspecifiedParameters
3414 using base = SgAsmDwarfConstruct;
3415 static constexpr char const * const name{"AsmDwarfUnspecifiedParameters"};
3416 static constexpr unsigned long variant{138};
3417 static constexpr bool concrete{true};
3418 using subclasses_t = mp::List<>;
3419 using fields_t = mp::List<>;
3420};
3421template <> struct node_from_variant_t<138> { using type = SgAsmDwarfUnspecifiedParameters; };
3422
3423// Class: AsmDwarfUnspecifiedType
3426 using base = SgAsmDwarfConstruct;
3427 static constexpr char const * const name{"AsmDwarfUnspecifiedType"};
3428 static constexpr unsigned long variant{139};
3429 static constexpr bool concrete{true};
3430 using subclasses_t = mp::List<>;
3431 using fields_t = mp::List<>;
3432};
3433template <> struct node_from_variant_t<139> { using type = SgAsmDwarfUnspecifiedType; };
3434
3435// Class: AsmDwarfUpcRelaxedType
3438 using base = SgAsmDwarfConstruct;
3439 static constexpr char const * const name{"AsmDwarfUpcRelaxedType"};
3440 static constexpr unsigned long variant{140};
3441 static constexpr bool concrete{true};
3442 using subclasses_t = mp::List<>;
3443 using fields_t = mp::List<>;
3444};
3445template <> struct node_from_variant_t<140> { using type = SgAsmDwarfUpcRelaxedType; };
3446
3447// Class: AsmDwarfUpcSharedType
3450 using base = SgAsmDwarfConstruct;
3451 static constexpr char const * const name{"AsmDwarfUpcSharedType"};
3452 static constexpr unsigned long variant{141};
3453 static constexpr bool concrete{true};
3454 using subclasses_t = mp::List<>;
3455 using fields_t = mp::List<>;
3456};
3457template <> struct node_from_variant_t<141> { using type = SgAsmDwarfUpcSharedType; };
3458
3459// Class: AsmDwarfUpcStrictType
3462 using base = SgAsmDwarfConstruct;
3463 static constexpr char const * const name{"AsmDwarfUpcStrictType"};
3464 static constexpr unsigned long variant{142};
3465 static constexpr bool concrete{true};
3466 using subclasses_t = mp::List<>;
3467 using fields_t = mp::List<>;
3468};
3469template <> struct node_from_variant_t<142> { using type = SgAsmDwarfUpcStrictType; };
3470
3471// Class: AsmDwarfVariable
3473 using node = SgAsmDwarfVariable;
3474 using base = SgAsmDwarfConstruct;
3475 static constexpr char const * const name{"AsmDwarfVariable"};
3476 static constexpr unsigned long variant{143};
3477 static constexpr bool concrete{true};
3478 using subclasses_t = mp::List<>;
3479 using fields_t = mp::List<>;
3480};
3481template <> struct node_from_variant_t<143> { using type = SgAsmDwarfVariable; };
3482
3483// Class: AsmDwarfVariant
3485 using node = SgAsmDwarfVariant;
3486 using base = SgAsmDwarfConstruct;
3487 static constexpr char const * const name{"AsmDwarfVariant"};
3488 static constexpr unsigned long variant{144};
3489 static constexpr bool concrete{true};
3490 using subclasses_t = mp::List<>;
3491 using fields_t = mp::List<>;
3492};
3493template <> struct node_from_variant_t<144> { using type = SgAsmDwarfVariant; };
3494
3495// Class: AsmDwarfVariantPart
3498 using base = SgAsmDwarfConstruct;
3499 static constexpr char const * const name{"AsmDwarfVariantPart"};
3500 static constexpr unsigned long variant{145};
3501 static constexpr bool concrete{true};
3502 using subclasses_t = mp::List<>;
3503 using fields_t = mp::List<>;
3504};
3505template <> struct node_from_variant_t<145> { using type = SgAsmDwarfVariantPart; };
3506
3507// Class: AsmDwarfVolatileType
3510 using base = SgAsmDwarfConstruct;
3511 static constexpr char const * const name{"AsmDwarfVolatileType"};
3512 static constexpr unsigned long variant{146};
3513 static constexpr bool concrete{true};
3514 using subclasses_t = mp::List<>;
3515 using fields_t = mp::List<>;
3516};
3517template <> struct node_from_variant_t<146> { using type = SgAsmDwarfVolatileType; };
3518
3519// Class: AsmDwarfWithStmt
3521 using node = SgAsmDwarfWithStmt;
3522 using base = SgAsmDwarfConstruct;
3523 static constexpr char const * const name{"AsmDwarfWithStmt"};
3524 static constexpr unsigned long variant{147};
3525 static constexpr bool concrete{true};
3526 using subclasses_t = mp::List<>;
3527 using fields_t = mp::List<>;
3528};
3529template <> struct node_from_variant_t<147> { using type = SgAsmDwarfWithStmt; };
3530
3531// Class: AsmElfDynamicEntry
3532template <> struct describe_field_t<SgAsmElfDynamicEntry,SgAsmElfDynamicEntry::EntryType,&SgAsmElfDynamicEntry::p_d_tag> {
3534 using field_type = SgAsmElfDynamicEntry::EntryType;
3535 static constexpr size_t position{0};
3536 static constexpr char const * const name{"d_tag"};
3537 static constexpr char const * const typestr{"SgAsmElfDynamicEntry::EntryType"};
3538 static constexpr bool traverse{false};
3539 static constexpr auto mbr_ptr{&SgAsmElfDynamicEntry::p_d_tag};
3540 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3541 using bind = Desc<SgAsmElfDynamicEntry, SgAsmElfDynamicEntry::EntryType SgAsmElfDynamicEntry::*, &SgAsmElfDynamicEntry::p_d_tag>;
3542};
3543template <> struct describe_field_t<SgAsmElfDynamicEntry,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmElfDynamicEntry::p_d_val> {
3546 static constexpr size_t position{1};
3547 static constexpr char const * const name{"d_val"};
3548 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
3549 static constexpr bool traverse{false};
3550 static constexpr auto mbr_ptr{&SgAsmElfDynamicEntry::p_d_val};
3551 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3552 using bind = Desc<SgAsmElfDynamicEntry, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmElfDynamicEntry::*, &SgAsmElfDynamicEntry::p_d_val>;
3553};
3554template <> struct describe_field_t<SgAsmElfDynamicEntry,SgAsmGenericString*,&SgAsmElfDynamicEntry::p_name> {
3557 static constexpr size_t position{2};
3558 static constexpr char const * const name{"name"};
3559 static constexpr char const * const typestr{"SgAsmGenericString*"};
3560 static constexpr bool traverse{true};
3561 static constexpr auto mbr_ptr{&SgAsmElfDynamicEntry::p_name};
3562 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3563 using bind = Desc<SgAsmElfDynamicEntry, SgAsmGenericString* SgAsmElfDynamicEntry::*, &SgAsmElfDynamicEntry::p_name>;
3564};
3565template <> struct describe_field_t<SgAsmElfDynamicEntry,SgUnsignedCharList,&SgAsmElfDynamicEntry::p_extra> {
3567 using field_type = SgUnsignedCharList;
3568 static constexpr size_t position{3};
3569 static constexpr char const * const name{"extra"};
3570 static constexpr char const * const typestr{"SgUnsignedCharList"};
3571 static constexpr bool traverse{false};
3572 static constexpr auto mbr_ptr{&SgAsmElfDynamicEntry::p_extra};
3573 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3574 using bind = Desc<SgAsmElfDynamicEntry, SgUnsignedCharList SgAsmElfDynamicEntry::*, &SgAsmElfDynamicEntry::p_extra>;
3575};
3585template <> struct node_from_variant_t<148> { using type = SgAsmElfDynamicEntry; };
3586
3587// Class: AsmElfDynamicEntryList
3588template <> struct describe_field_t<SgAsmElfDynamicEntryList,SgAsmElfDynamicEntryPtrList,&SgAsmElfDynamicEntryList::p_entries> {
3590 using field_type = SgAsmElfDynamicEntryPtrList;
3591 static constexpr size_t position{0};
3592 static constexpr char const * const name{"entries"};
3593 static constexpr char const * const typestr{"SgAsmElfDynamicEntryPtrList"};
3594 static constexpr bool traverse{false};
3595 static constexpr auto mbr_ptr{&SgAsmElfDynamicEntryList::p_entries};
3596 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3597 using bind = Desc<SgAsmElfDynamicEntryList, SgAsmElfDynamicEntryPtrList SgAsmElfDynamicEntryList::*, &SgAsmElfDynamicEntryList::p_entries>;
3598};
3602 static constexpr char const * const name{"AsmElfDynamicEntryList"};
3603 static constexpr unsigned long variant{149};
3604 static constexpr bool concrete{true};
3605 using subclasses_t = mp::List<>;
3607};
3608template <> struct node_from_variant_t<149> { using type = SgAsmElfDynamicEntryList; };
3609
3610// Class: AsmElfDynamicSection
3611template <> struct describe_field_t<SgAsmElfDynamicSection,SgAsmElfDynamicEntryList*,&SgAsmElfDynamicSection::p_entries> {
3614 static constexpr size_t position{0};
3615 static constexpr char const * const name{"entries"};
3616 static constexpr char const * const typestr{"SgAsmElfDynamicEntryList*"};
3617 static constexpr bool traverse{true};
3618 static constexpr auto mbr_ptr{&SgAsmElfDynamicSection::p_entries};
3619 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3620 using bind = Desc<SgAsmElfDynamicSection, SgAsmElfDynamicEntryList* SgAsmElfDynamicSection::*, &SgAsmElfDynamicSection::p_entries>;
3621};
3624 using base = SgAsmElfSection;
3625 static constexpr char const * const name{"AsmElfDynamicSection"};
3626 static constexpr unsigned long variant{150};
3627 static constexpr bool concrete{true};
3628 using subclasses_t = mp::List<>;
3630};
3631template <> struct node_from_variant_t<150> { using type = SgAsmElfDynamicSection; };
3632
3633// Class: AsmElfEHFrameEntryCI
3634template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,int,&SgAsmElfEHFrameEntryCI::p_version> {
3636 using field_type = int;
3637 static constexpr size_t position{0};
3638 static constexpr char const * const name{"version"};
3639 static constexpr char const * const typestr{"int"};
3640 static constexpr bool traverse{false};
3641 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_version};
3642 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3643 using bind = Desc<SgAsmElfEHFrameEntryCI, int SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_version>;
3644};
3645template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,std::string,&SgAsmElfEHFrameEntryCI::p_augmentation_string> {
3647 using field_type = std::string;
3648 static constexpr size_t position{1};
3649 static constexpr char const * const name{"augmentation_string"};
3650 static constexpr char const * const typestr{"std::string"};
3651 static constexpr bool traverse{false};
3652 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_augmentation_string};
3653 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3654 using bind = Desc<SgAsmElfEHFrameEntryCI, std::string SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_augmentation_string>;
3655};
3656template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,uint64_t,&SgAsmElfEHFrameEntryCI::p_eh_data> {
3658 using field_type = uint64_t;
3659 static constexpr size_t position{2};
3660 static constexpr char const * const name{"eh_data"};
3661 static constexpr char const * const typestr{"uint64_t"};
3662 static constexpr bool traverse{false};
3663 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_eh_data};
3664 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3665 using bind = Desc<SgAsmElfEHFrameEntryCI, uint64_t SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_eh_data>;
3666};
3667template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,uint64_t,&SgAsmElfEHFrameEntryCI::p_code_alignment_factor> {
3669 using field_type = uint64_t;
3670 static constexpr size_t position{3};
3671 static constexpr char const * const name{"code_alignment_factor"};
3672 static constexpr char const * const typestr{"uint64_t"};
3673 static constexpr bool traverse{false};
3674 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_code_alignment_factor};
3675 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3676 using bind = Desc<SgAsmElfEHFrameEntryCI, uint64_t SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_code_alignment_factor>;
3677};
3678template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,int64_t,&SgAsmElfEHFrameEntryCI::p_data_alignment_factor> {
3680 using field_type = int64_t;
3681 static constexpr size_t position{4};
3682 static constexpr char const * const name{"data_alignment_factor"};
3683 static constexpr char const * const typestr{"int64_t"};
3684 static constexpr bool traverse{false};
3685 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_data_alignment_factor};
3686 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3687 using bind = Desc<SgAsmElfEHFrameEntryCI, int64_t SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_data_alignment_factor>;
3688};
3689template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,uint64_t,&SgAsmElfEHFrameEntryCI::p_augmentation_data_length> {
3691 using field_type = uint64_t;
3692 static constexpr size_t position{5};
3693 static constexpr char const * const name{"augmentation_data_length"};
3694 static constexpr char const * const typestr{"uint64_t"};
3695 static constexpr bool traverse{false};
3696 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_augmentation_data_length};
3697 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3698 using bind = Desc<SgAsmElfEHFrameEntryCI, uint64_t SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_augmentation_data_length>;
3699};
3700template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,int,&SgAsmElfEHFrameEntryCI::p_lsda_encoding> {
3702 using field_type = int;
3703 static constexpr size_t position{6};
3704 static constexpr char const * const name{"lsda_encoding"};
3705 static constexpr char const * const typestr{"int"};
3706 static constexpr bool traverse{false};
3707 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_lsda_encoding};
3708 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3709 using bind = Desc<SgAsmElfEHFrameEntryCI, int SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_lsda_encoding>;
3710};
3711template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,int,&SgAsmElfEHFrameEntryCI::p_prh_encoding> {
3713 using field_type = int;
3714 static constexpr size_t position{7};
3715 static constexpr char const * const name{"prh_encoding"};
3716 static constexpr char const * const typestr{"int"};
3717 static constexpr bool traverse{false};
3718 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_prh_encoding};
3719 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3720 using bind = Desc<SgAsmElfEHFrameEntryCI, int SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_prh_encoding>;
3721};
3722template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,unsigned,&SgAsmElfEHFrameEntryCI::p_prh_arg> {
3724 using field_type = unsigned;
3725 static constexpr size_t position{8};
3726 static constexpr char const * const name{"prh_arg"};
3727 static constexpr char const * const typestr{"unsigned"};
3728 static constexpr bool traverse{false};
3729 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_prh_arg};
3730 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3731 using bind = Desc<SgAsmElfEHFrameEntryCI, unsigned SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_prh_arg>;
3732};
3733template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,rose_addr_t,&SgAsmElfEHFrameEntryCI::p_prh_addr> {
3735 using field_type = rose_addr_t;
3736 static constexpr size_t position{9};
3737 static constexpr char const * const name{"prh_addr"};
3738 static constexpr char const * const typestr{"rose_addr_t"};
3739 static constexpr bool traverse{false};
3740 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_prh_addr};
3741 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3742 using bind = Desc<SgAsmElfEHFrameEntryCI, rose_addr_t SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_prh_addr>;
3743};
3744template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,int,&SgAsmElfEHFrameEntryCI::p_addr_encoding> {
3746 using field_type = int;
3747 static constexpr size_t position{10};
3748 static constexpr char const * const name{"addr_encoding"};
3749 static constexpr char const * const typestr{"int"};
3750 static constexpr bool traverse{false};
3751 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_addr_encoding};
3752 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3753 using bind = Desc<SgAsmElfEHFrameEntryCI, int SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_addr_encoding>;
3754};
3755template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,bool,&SgAsmElfEHFrameEntryCI::p_sig_frame> {
3757 using field_type = bool;
3758 static constexpr size_t position{11};
3759 static constexpr char const * const name{"sig_frame"};
3760 static constexpr char const * const typestr{"bool"};
3761 static constexpr bool traverse{false};
3762 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_sig_frame};
3763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3764 using bind = Desc<SgAsmElfEHFrameEntryCI, bool SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_sig_frame>;
3765};
3766template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,SgUnsignedCharList,&SgAsmElfEHFrameEntryCI::p_instructions> {
3768 using field_type = SgUnsignedCharList;
3769 static constexpr size_t position{12};
3770 static constexpr char const * const name{"instructions"};
3771 static constexpr char const * const typestr{"SgUnsignedCharList"};
3772 static constexpr bool traverse{false};
3773 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_instructions};
3774 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3775 using bind = Desc<SgAsmElfEHFrameEntryCI, SgUnsignedCharList SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_instructions>;
3776};
3777template <> struct describe_field_t<SgAsmElfEHFrameEntryCI,SgAsmElfEHFrameEntryFDList*,&SgAsmElfEHFrameEntryCI::p_fd_entries> {
3780 static constexpr size_t position{13};
3781 static constexpr char const * const name{"fd_entries"};
3782 static constexpr char const * const typestr{"SgAsmElfEHFrameEntryFDList*"};
3783 static constexpr bool traverse{true};
3784 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCI::p_fd_entries};
3785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3786 using bind = Desc<SgAsmElfEHFrameEntryCI, SgAsmElfEHFrameEntryFDList* SgAsmElfEHFrameEntryCI::*, &SgAsmElfEHFrameEntryCI::p_fd_entries>;
3787};
3791 static constexpr char const * const name{"AsmElfEHFrameEntryCI"};
3792 static constexpr unsigned long variant{151};
3793 static constexpr bool concrete{true};
3794 using subclasses_t = mp::List<>;
3796};
3797template <> struct node_from_variant_t<151> { using type = SgAsmElfEHFrameEntryCI; };
3798
3799// Class: AsmElfEHFrameEntryCIList
3800template <> struct describe_field_t<SgAsmElfEHFrameEntryCIList,SgAsmElfEHFrameEntryCIPtrList,&SgAsmElfEHFrameEntryCIList::p_entries> {
3802 using field_type = SgAsmElfEHFrameEntryCIPtrList;
3803 static constexpr size_t position{0};
3804 static constexpr char const * const name{"entries"};
3805 static constexpr char const * const typestr{"SgAsmElfEHFrameEntryCIPtrList"};
3806 static constexpr bool traverse{false};
3807 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryCIList::p_entries};
3808 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3809 using bind = Desc<SgAsmElfEHFrameEntryCIList, SgAsmElfEHFrameEntryCIPtrList SgAsmElfEHFrameEntryCIList::*, &SgAsmElfEHFrameEntryCIList::p_entries>;
3810};
3814 static constexpr char const * const name{"AsmElfEHFrameEntryCIList"};
3815 static constexpr unsigned long variant{152};
3816 static constexpr bool concrete{true};
3817 using subclasses_t = mp::List<>;
3819};
3820template <> struct node_from_variant_t<152> { using type = SgAsmElfEHFrameEntryCIList; };
3821
3822// Class: AsmElfEHFrameEntryFD
3823template <> struct describe_field_t<SgAsmElfEHFrameEntryFD,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmElfEHFrameEntryFD::p_begin_rva> {
3826 static constexpr size_t position{0};
3827 static constexpr char const * const name{"begin_rva"};
3828 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
3829 static constexpr bool traverse{false};
3830 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryFD::p_begin_rva};
3831 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3832 using bind = Desc<SgAsmElfEHFrameEntryFD, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmElfEHFrameEntryFD::*, &SgAsmElfEHFrameEntryFD::p_begin_rva>;
3833};
3834template <> struct describe_field_t<SgAsmElfEHFrameEntryFD,rose_addr_t,&SgAsmElfEHFrameEntryFD::p_size> {
3836 using field_type = rose_addr_t;
3837 static constexpr size_t position{1};
3838 static constexpr char const * const name{"size"};
3839 static constexpr char const * const typestr{"rose_addr_t"};
3840 static constexpr bool traverse{false};
3841 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryFD::p_size};
3842 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3843 using bind = Desc<SgAsmElfEHFrameEntryFD, rose_addr_t SgAsmElfEHFrameEntryFD::*, &SgAsmElfEHFrameEntryFD::p_size>;
3844};
3845template <> struct describe_field_t<SgAsmElfEHFrameEntryFD,SgUnsignedCharList,&SgAsmElfEHFrameEntryFD::p_augmentation_data> {
3847 using field_type = SgUnsignedCharList;
3848 static constexpr size_t position{2};
3849 static constexpr char const * const name{"augmentation_data"};
3850 static constexpr char const * const typestr{"SgUnsignedCharList"};
3851 static constexpr bool traverse{false};
3852 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryFD::p_augmentation_data};
3853 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3854 using bind = Desc<SgAsmElfEHFrameEntryFD, SgUnsignedCharList SgAsmElfEHFrameEntryFD::*, &SgAsmElfEHFrameEntryFD::p_augmentation_data>;
3855};
3856template <> struct describe_field_t<SgAsmElfEHFrameEntryFD,SgUnsignedCharList,&SgAsmElfEHFrameEntryFD::p_instructions> {
3858 using field_type = SgUnsignedCharList;
3859 static constexpr size_t position{3};
3860 static constexpr char const * const name{"instructions"};
3861 static constexpr char const * const typestr{"SgUnsignedCharList"};
3862 static constexpr bool traverse{false};
3863 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryFD::p_instructions};
3864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3865 using bind = Desc<SgAsmElfEHFrameEntryFD, SgUnsignedCharList SgAsmElfEHFrameEntryFD::*, &SgAsmElfEHFrameEntryFD::p_instructions>;
3866};
3876template <> struct node_from_variant_t<153> { using type = SgAsmElfEHFrameEntryFD; };
3877
3878// Class: AsmElfEHFrameEntryFDList
3879template <> struct describe_field_t<SgAsmElfEHFrameEntryFDList,SgAsmElfEHFrameEntryFDPtrList,&SgAsmElfEHFrameEntryFDList::p_entries> {
3881 using field_type = SgAsmElfEHFrameEntryFDPtrList;
3882 static constexpr size_t position{0};
3883 static constexpr char const * const name{"entries"};
3884 static constexpr char const * const typestr{"SgAsmElfEHFrameEntryFDPtrList"};
3885 static constexpr bool traverse{false};
3886 static constexpr auto mbr_ptr{&SgAsmElfEHFrameEntryFDList::p_entries};
3887 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3888 using bind = Desc<SgAsmElfEHFrameEntryFDList, SgAsmElfEHFrameEntryFDPtrList SgAsmElfEHFrameEntryFDList::*, &SgAsmElfEHFrameEntryFDList::p_entries>;
3889};
3893 static constexpr char const * const name{"AsmElfEHFrameEntryFDList"};
3894 static constexpr unsigned long variant{154};
3895 static constexpr bool concrete{true};
3896 using subclasses_t = mp::List<>;
3898};
3899template <> struct node_from_variant_t<154> { using type = SgAsmElfEHFrameEntryFDList; };
3900
3901// Class: AsmElfEHFrameSection
3902template <> struct describe_field_t<SgAsmElfEHFrameSection,SgAsmElfEHFrameEntryCIList*,&SgAsmElfEHFrameSection::p_ci_entries> {
3905 static constexpr size_t position{0};
3906 static constexpr char const * const name{"ci_entries"};
3907 static constexpr char const * const typestr{"SgAsmElfEHFrameEntryCIList*"};
3908 static constexpr bool traverse{true};
3909 static constexpr auto mbr_ptr{&SgAsmElfEHFrameSection::p_ci_entries};
3910 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3911 using bind = Desc<SgAsmElfEHFrameSection, SgAsmElfEHFrameEntryCIList* SgAsmElfEHFrameSection::*, &SgAsmElfEHFrameSection::p_ci_entries>;
3912};
3915 using base = SgAsmElfSection;
3916 static constexpr char const * const name{"AsmElfEHFrameSection"};
3917 static constexpr unsigned long variant{155};
3918 static constexpr bool concrete{true};
3919 using subclasses_t = mp::List<>;
3921};
3922template <> struct node_from_variant_t<155> { using type = SgAsmElfEHFrameSection; };
3923
3924// Class: AsmElfFileHeader
3925template <> struct describe_field_t<SgAsmElfFileHeader,unsigned char,&SgAsmElfFileHeader::p_e_ident_file_class> {
3926 using parent = SgAsmElfFileHeader;
3927 using field_type = unsigned char;
3928 static constexpr size_t position{0};
3929 static constexpr char const * const name{"e_ident_file_class"};
3930 static constexpr char const * const typestr{"unsigned char"};
3931 static constexpr bool traverse{false};
3932 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_ident_file_class};
3933 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3934 using bind = Desc<SgAsmElfFileHeader, unsigned char SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_ident_file_class>;
3935};
3936template <> struct describe_field_t<SgAsmElfFileHeader,unsigned char,&SgAsmElfFileHeader::p_e_ident_data_encoding> {
3937 using parent = SgAsmElfFileHeader;
3938 using field_type = unsigned char;
3939 static constexpr size_t position{1};
3940 static constexpr char const * const name{"e_ident_data_encoding"};
3941 static constexpr char const * const typestr{"unsigned char"};
3942 static constexpr bool traverse{false};
3943 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_ident_data_encoding};
3944 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3945 using bind = Desc<SgAsmElfFileHeader, unsigned char SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_ident_data_encoding>;
3946};
3947template <> struct describe_field_t<SgAsmElfFileHeader,unsigned char,&SgAsmElfFileHeader::p_e_ident_file_version> {
3948 using parent = SgAsmElfFileHeader;
3949 using field_type = unsigned char;
3950 static constexpr size_t position{2};
3951 static constexpr char const * const name{"e_ident_file_version"};
3952 static constexpr char const * const typestr{"unsigned char"};
3953 static constexpr bool traverse{false};
3954 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_ident_file_version};
3955 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3956 using bind = Desc<SgAsmElfFileHeader, unsigned char SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_ident_file_version>;
3957};
3958template <> struct describe_field_t<SgAsmElfFileHeader,SgUnsignedCharList,&SgAsmElfFileHeader::p_e_ident_padding> {
3959 using parent = SgAsmElfFileHeader;
3960 using field_type = SgUnsignedCharList;
3961 static constexpr size_t position{3};
3962 static constexpr char const * const name{"e_ident_padding"};
3963 static constexpr char const * const typestr{"SgUnsignedCharList"};
3964 static constexpr bool traverse{false};
3965 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_ident_padding};
3966 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3967 using bind = Desc<SgAsmElfFileHeader, SgUnsignedCharList SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_ident_padding>;
3968};
3969template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_e_type> {
3970 using parent = SgAsmElfFileHeader;
3971 using field_type = unsigned long;
3972 static constexpr size_t position{4};
3973 static constexpr char const * const name{"e_type"};
3974 static constexpr char const * const typestr{"unsigned long"};
3975 static constexpr bool traverse{false};
3976 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_type};
3977 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3978 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_type>;
3979};
3980template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_e_machine> {
3981 using parent = SgAsmElfFileHeader;
3982 using field_type = unsigned long;
3983 static constexpr size_t position{5};
3984 static constexpr char const * const name{"e_machine"};
3985 static constexpr char const * const typestr{"unsigned long"};
3986 static constexpr bool traverse{false};
3987 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_machine};
3988 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
3989 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_machine>;
3990};
3991template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_e_flags> {
3992 using parent = SgAsmElfFileHeader;
3993 using field_type = unsigned long;
3994 static constexpr size_t position{6};
3995 static constexpr char const * const name{"e_flags"};
3996 static constexpr char const * const typestr{"unsigned long"};
3997 static constexpr bool traverse{false};
3998 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_flags};
3999 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4000 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_flags>;
4001};
4002template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_e_ehsize> {
4003 using parent = SgAsmElfFileHeader;
4004 using field_type = unsigned long;
4005 static constexpr size_t position{7};
4006 static constexpr char const * const name{"e_ehsize"};
4007 static constexpr char const * const typestr{"unsigned long"};
4008 static constexpr bool traverse{false};
4009 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_ehsize};
4010 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4011 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_ehsize>;
4012};
4013template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_phextrasz> {
4014 using parent = SgAsmElfFileHeader;
4015 using field_type = unsigned long;
4016 static constexpr size_t position{8};
4017 static constexpr char const * const name{"phextrasz"};
4018 static constexpr char const * const typestr{"unsigned long"};
4019 static constexpr bool traverse{false};
4020 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_phextrasz};
4021 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4022 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_phextrasz>;
4023};
4024template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_e_phnum> {
4025 using parent = SgAsmElfFileHeader;
4026 using field_type = unsigned long;
4027 static constexpr size_t position{9};
4028 static constexpr char const * const name{"e_phnum"};
4029 static constexpr char const * const typestr{"unsigned long"};
4030 static constexpr bool traverse{false};
4031 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_phnum};
4032 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4033 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_phnum>;
4034};
4035template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_shextrasz> {
4036 using parent = SgAsmElfFileHeader;
4037 using field_type = unsigned long;
4038 static constexpr size_t position{10};
4039 static constexpr char const * const name{"shextrasz"};
4040 static constexpr char const * const typestr{"unsigned long"};
4041 static constexpr bool traverse{false};
4042 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_shextrasz};
4043 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4044 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_shextrasz>;
4045};
4046template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_e_shnum> {
4047 using parent = SgAsmElfFileHeader;
4048 using field_type = unsigned long;
4049 static constexpr size_t position{11};
4050 static constexpr char const * const name{"e_shnum"};
4051 static constexpr char const * const typestr{"unsigned long"};
4052 static constexpr bool traverse{false};
4053 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_shnum};
4054 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4055 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_shnum>;
4056};
4057template <> struct describe_field_t<SgAsmElfFileHeader,unsigned long,&SgAsmElfFileHeader::p_e_shstrndx> {
4058 using parent = SgAsmElfFileHeader;
4059 using field_type = unsigned long;
4060 static constexpr size_t position{12};
4061 static constexpr char const * const name{"e_shstrndx"};
4062 static constexpr char const * const typestr{"unsigned long"};
4063 static constexpr bool traverse{false};
4064 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_e_shstrndx};
4065 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4066 using bind = Desc<SgAsmElfFileHeader, unsigned long SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_e_shstrndx>;
4067};
4068template <> struct describe_field_t<SgAsmElfFileHeader,SgAsmElfSectionTable*,&SgAsmElfFileHeader::p_sectionTable> {
4069 using parent = SgAsmElfFileHeader;
4071 static constexpr size_t position{13};
4072 static constexpr char const * const name{"sectionTable"};
4073 static constexpr char const * const typestr{"SgAsmElfSectionTable*"};
4074 static constexpr bool traverse{false};
4075 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_sectionTable};
4076 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4077 using bind = Desc<SgAsmElfFileHeader, SgAsmElfSectionTable* SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_sectionTable>;
4078};
4079template <> struct describe_field_t<SgAsmElfFileHeader,SgAsmElfSegmentTable*,&SgAsmElfFileHeader::p_segmentTable> {
4080 using parent = SgAsmElfFileHeader;
4082 static constexpr size_t position{14};
4083 static constexpr char const * const name{"segmentTable"};
4084 static constexpr char const * const typestr{"SgAsmElfSegmentTable*"};
4085 static constexpr bool traverse{false};
4086 static constexpr auto mbr_ptr{&SgAsmElfFileHeader::p_segmentTable};
4087 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4088 using bind = Desc<SgAsmElfFileHeader, SgAsmElfSegmentTable* SgAsmElfFileHeader::*, &SgAsmElfFileHeader::p_segmentTable>;
4089};
4091 using node = SgAsmElfFileHeader;
4092 using base = SgAsmGenericHeader;
4093 static constexpr char const * const name{"AsmElfFileHeader"};
4094 static constexpr unsigned long variant{156};
4095 static constexpr bool concrete{true};
4096 using subclasses_t = mp::List<>;
4098};
4099template <> struct node_from_variant_t<156> { using type = SgAsmElfFileHeader; };
4100
4101// Class: AsmElfNoteEntry
4102template <> struct describe_field_t<SgAsmElfNoteEntry,unsigned,&SgAsmElfNoteEntry::p_type> {
4103 using parent = SgAsmElfNoteEntry;
4104 using field_type = unsigned;
4105 static constexpr size_t position{0};
4106 static constexpr char const * const name{"type"};
4107 static constexpr char const * const typestr{"unsigned"};
4108 static constexpr bool traverse{false};
4109 static constexpr auto mbr_ptr{&SgAsmElfNoteEntry::p_type};
4110 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4111 using bind = Desc<SgAsmElfNoteEntry, unsigned SgAsmElfNoteEntry::*, &SgAsmElfNoteEntry::p_type>;
4112};
4113template <> struct describe_field_t<SgAsmElfNoteEntry,SgAsmGenericString*,&SgAsmElfNoteEntry::p_name> {
4114 using parent = SgAsmElfNoteEntry;
4116 static constexpr size_t position{1};
4117 static constexpr char const * const name{"name"};
4118 static constexpr char const * const typestr{"SgAsmGenericString*"};
4119 static constexpr bool traverse{true};
4120 static constexpr auto mbr_ptr{&SgAsmElfNoteEntry::p_name};
4121 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4122 using bind = Desc<SgAsmElfNoteEntry, SgAsmGenericString* SgAsmElfNoteEntry::*, &SgAsmElfNoteEntry::p_name>;
4123};
4124template <> struct describe_field_t<SgAsmElfNoteEntry,SgUnsignedCharList,&SgAsmElfNoteEntry::p_payload> {
4125 using parent = SgAsmElfNoteEntry;
4126 using field_type = SgUnsignedCharList;
4127 static constexpr size_t position{2};
4128 static constexpr char const * const name{"payload"};
4129 static constexpr char const * const typestr{"SgUnsignedCharList"};
4130 static constexpr bool traverse{false};
4131 static constexpr auto mbr_ptr{&SgAsmElfNoteEntry::p_payload};
4132 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4133 using bind = Desc<SgAsmElfNoteEntry, SgUnsignedCharList SgAsmElfNoteEntry::*, &SgAsmElfNoteEntry::p_payload>;
4134};
4136 using node = SgAsmElfNoteEntry;
4138 static constexpr char const * const name{"AsmElfNoteEntry"};
4139 static constexpr unsigned long variant{157};
4140 static constexpr bool concrete{true};
4141 using subclasses_t = mp::List<>;
4143};
4144template <> struct node_from_variant_t<157> { using type = SgAsmElfNoteEntry; };
4145
4146// Class: AsmElfNoteEntryList
4147template <> struct describe_field_t<SgAsmElfNoteEntryList,SgAsmElfNoteEntryPtrList,&SgAsmElfNoteEntryList::p_entries> {
4149 using field_type = SgAsmElfNoteEntryPtrList;
4150 static constexpr size_t position{0};
4151 static constexpr char const * const name{"entries"};
4152 static constexpr char const * const typestr{"SgAsmElfNoteEntryPtrList"};
4153 static constexpr bool traverse{false};
4154 static constexpr auto mbr_ptr{&SgAsmElfNoteEntryList::p_entries};
4155 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4156 using bind = Desc<SgAsmElfNoteEntryList, SgAsmElfNoteEntryPtrList SgAsmElfNoteEntryList::*, &SgAsmElfNoteEntryList::p_entries>;
4157};
4161 static constexpr char const * const name{"AsmElfNoteEntryList"};
4162 static constexpr unsigned long variant{158};
4163 static constexpr bool concrete{true};
4164 using subclasses_t = mp::List<>;
4166};
4167template <> struct node_from_variant_t<158> { using type = SgAsmElfNoteEntryList; };
4168
4169// Class: AsmElfNoteSection
4170template <> struct describe_field_t<SgAsmElfNoteSection,SgAsmElfNoteEntryList*,&SgAsmElfNoteSection::p_entries> {
4173 static constexpr size_t position{0};
4174 static constexpr char const * const name{"entries"};
4175 static constexpr char const * const typestr{"SgAsmElfNoteEntryList*"};
4176 static constexpr bool traverse{true};
4177 static constexpr auto mbr_ptr{&SgAsmElfNoteSection::p_entries};
4178 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4179 using bind = Desc<SgAsmElfNoteSection, SgAsmElfNoteEntryList* SgAsmElfNoteSection::*, &SgAsmElfNoteSection::p_entries>;
4180};
4182 using node = SgAsmElfNoteSection;
4183 using base = SgAsmElfSection;
4184 static constexpr char const * const name{"AsmElfNoteSection"};
4185 static constexpr unsigned long variant{159};
4186 static constexpr bool concrete{true};
4187 using subclasses_t = mp::List<>;
4189};
4190template <> struct node_from_variant_t<159> { using type = SgAsmElfNoteSection; };
4191
4192// Class: AsmElfRelocEntry
4193template <> struct describe_field_t<SgAsmElfRelocEntry,rose_addr_t,&SgAsmElfRelocEntry::p_r_offset> {
4194 using parent = SgAsmElfRelocEntry;
4195 using field_type = rose_addr_t;
4196 static constexpr size_t position{0};
4197 static constexpr char const * const name{"r_offset"};
4198 static constexpr char const * const typestr{"rose_addr_t"};
4199 static constexpr bool traverse{false};
4200 static constexpr auto mbr_ptr{&SgAsmElfRelocEntry::p_r_offset};
4201 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4202 using bind = Desc<SgAsmElfRelocEntry, rose_addr_t SgAsmElfRelocEntry::*, &SgAsmElfRelocEntry::p_r_offset>;
4203};
4204template <> struct describe_field_t<SgAsmElfRelocEntry,rose_addr_t,&SgAsmElfRelocEntry::p_r_addend> {
4205 using parent = SgAsmElfRelocEntry;
4206 using field_type = rose_addr_t;
4207 static constexpr size_t position{1};
4208 static constexpr char const * const name{"r_addend"};
4209 static constexpr char const * const typestr{"rose_addr_t"};
4210 static constexpr bool traverse{false};
4211 static constexpr auto mbr_ptr{&SgAsmElfRelocEntry::p_r_addend};
4212 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4213 using bind = Desc<SgAsmElfRelocEntry, rose_addr_t SgAsmElfRelocEntry::*, &SgAsmElfRelocEntry::p_r_addend>;
4214};
4215template <> struct describe_field_t<SgAsmElfRelocEntry,unsigned long,&SgAsmElfRelocEntry::p_sym> {
4216 using parent = SgAsmElfRelocEntry;
4217 using field_type = unsigned long;
4218 static constexpr size_t position{2};
4219 static constexpr char const * const name{"sym"};
4220 static constexpr char const * const typestr{"unsigned long"};
4221 static constexpr bool traverse{false};
4222 static constexpr auto mbr_ptr{&SgAsmElfRelocEntry::p_sym};
4223 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4224 using bind = Desc<SgAsmElfRelocEntry, unsigned long SgAsmElfRelocEntry::*, &SgAsmElfRelocEntry::p_sym>;
4225};
4226template <> struct describe_field_t<SgAsmElfRelocEntry,SgAsmElfRelocEntry::RelocType,&SgAsmElfRelocEntry::p_type> {
4227 using parent = SgAsmElfRelocEntry;
4229 static constexpr size_t position{3};
4230 static constexpr char const * const name{"type"};
4231 static constexpr char const * const typestr{"SgAsmElfRelocEntry::RelocType"};
4232 static constexpr bool traverse{false};
4233 static constexpr auto mbr_ptr{&SgAsmElfRelocEntry::p_type};
4234 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4235 using bind = Desc<SgAsmElfRelocEntry, SgAsmElfRelocEntry::RelocType SgAsmElfRelocEntry::*, &SgAsmElfRelocEntry::p_type>;
4236};
4237template <> struct describe_field_t<SgAsmElfRelocEntry,SgUnsignedCharList,&SgAsmElfRelocEntry::p_extra> {
4238 using parent = SgAsmElfRelocEntry;
4239 using field_type = SgUnsignedCharList;
4240 static constexpr size_t position{4};
4241 static constexpr char const * const name{"extra"};
4242 static constexpr char const * const typestr{"SgUnsignedCharList"};
4243 static constexpr bool traverse{false};
4244 static constexpr auto mbr_ptr{&SgAsmElfRelocEntry::p_extra};
4245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4246 using bind = Desc<SgAsmElfRelocEntry, SgUnsignedCharList SgAsmElfRelocEntry::*, &SgAsmElfRelocEntry::p_extra>;
4247};
4257template <> struct node_from_variant_t<160> { using type = SgAsmElfRelocEntry; };
4258
4259// Class: AsmElfRelocEntryList
4260template <> struct describe_field_t<SgAsmElfRelocEntryList,SgAsmElfRelocEntryPtrList,&SgAsmElfRelocEntryList::p_entries> {
4262 using field_type = SgAsmElfRelocEntryPtrList;
4263 static constexpr size_t position{0};
4264 static constexpr char const * const name{"entries"};
4265 static constexpr char const * const typestr{"SgAsmElfRelocEntryPtrList"};
4266 static constexpr bool traverse{true};
4267 static constexpr auto mbr_ptr{&SgAsmElfRelocEntryList::p_entries};
4268 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4269 using bind = Desc<SgAsmElfRelocEntryList, SgAsmElfRelocEntryPtrList SgAsmElfRelocEntryList::*, &SgAsmElfRelocEntryList::p_entries>;
4270};
4274 static constexpr char const * const name{"AsmElfRelocEntryList"};
4275 static constexpr unsigned long variant{161};
4276 static constexpr bool concrete{true};
4277 using subclasses_t = mp::List<>;
4279};
4280template <> struct node_from_variant_t<161> { using type = SgAsmElfRelocEntryList; };
4281
4282// Class: AsmElfRelocSection
4283template <> struct describe_field_t<SgAsmElfRelocSection,bool,&SgAsmElfRelocSection::p_usesAddend> {
4285 using field_type = bool;
4286 static constexpr size_t position{0};
4287 static constexpr char const * const name{"usesAddend"};
4288 static constexpr char const * const typestr{"bool"};
4289 static constexpr bool traverse{false};
4290 static constexpr auto mbr_ptr{&SgAsmElfRelocSection::p_usesAddend};
4291 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4292 using bind = Desc<SgAsmElfRelocSection, bool SgAsmElfRelocSection::*, &SgAsmElfRelocSection::p_usesAddend>;
4293};
4294template <> struct describe_field_t<SgAsmElfRelocSection,SgAsmElfSection*,&SgAsmElfRelocSection::p_targetSection> {
4296 using field_type = SgAsmElfSection*;
4297 static constexpr size_t position{1};
4298 static constexpr char const * const name{"targetSection"};
4299 static constexpr char const * const typestr{"SgAsmElfSection*"};
4300 static constexpr bool traverse{false};
4301 static constexpr auto mbr_ptr{&SgAsmElfRelocSection::p_targetSection};
4302 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4303 using bind = Desc<SgAsmElfRelocSection, SgAsmElfSection* SgAsmElfRelocSection::*, &SgAsmElfRelocSection::p_targetSection>;
4304};
4305template <> struct describe_field_t<SgAsmElfRelocSection,SgAsmElfRelocEntryList*,&SgAsmElfRelocSection::p_entries> {
4308 static constexpr size_t position{2};
4309 static constexpr char const * const name{"entries"};
4310 static constexpr char const * const typestr{"SgAsmElfRelocEntryList*"};
4311 static constexpr bool traverse{true};
4312 static constexpr auto mbr_ptr{&SgAsmElfRelocSection::p_entries};
4313 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4314 using bind = Desc<SgAsmElfRelocSection, SgAsmElfRelocEntryList* SgAsmElfRelocSection::*, &SgAsmElfRelocSection::p_entries>;
4315};
4317 using node = SgAsmElfRelocSection;
4318 using base = SgAsmElfSection;
4319 static constexpr char const * const name{"AsmElfRelocSection"};
4320 static constexpr unsigned long variant{162};
4321 static constexpr bool concrete{true};
4322 using subclasses_t = mp::List<>;
4324};
4325template <> struct node_from_variant_t<162> { using type = SgAsmElfRelocSection; };
4326
4327// Class: AsmElfSection
4328template <> struct describe_field_t<SgAsmElfSection,SgAsmElfSection*,&SgAsmElfSection::p_linkedSection> {
4329 using parent = SgAsmElfSection;
4330 using field_type = SgAsmElfSection*;
4331 static constexpr size_t position{0};
4332 static constexpr char const * const name{"linkedSection"};
4333 static constexpr char const * const typestr{"SgAsmElfSection*"};
4334 static constexpr bool traverse{false};
4335 static constexpr auto mbr_ptr{&SgAsmElfSection::p_linkedSection};
4336 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4337 using bind = Desc<SgAsmElfSection, SgAsmElfSection* SgAsmElfSection::*, &SgAsmElfSection::p_linkedSection>;
4338};
4339template <> struct describe_field_t<SgAsmElfSection,SgAsmElfSectionTableEntry*,&SgAsmElfSection::p_sectionEntry> {
4340 using parent = SgAsmElfSection;
4342 static constexpr size_t position{1};
4343 static constexpr char const * const name{"sectionEntry"};
4344 static constexpr char const * const typestr{"SgAsmElfSectionTableEntry*"};
4345 static constexpr bool traverse{true};
4346 static constexpr auto mbr_ptr{&SgAsmElfSection::p_sectionEntry};
4347 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4348 using bind = Desc<SgAsmElfSection, SgAsmElfSectionTableEntry* SgAsmElfSection::*, &SgAsmElfSection::p_sectionEntry>;
4349};
4350template <> struct describe_field_t<SgAsmElfSection,SgAsmElfSegmentTableEntry*,&SgAsmElfSection::p_segmentEntry> {
4351 using parent = SgAsmElfSection;
4353 static constexpr size_t position{2};
4354 static constexpr char const * const name{"segmentEntry"};
4355 static constexpr char const * const typestr{"SgAsmElfSegmentTableEntry*"};
4356 static constexpr bool traverse{true};
4357 static constexpr auto mbr_ptr{&SgAsmElfSection::p_segmentEntry};
4358 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4359 using bind = Desc<SgAsmElfSection, SgAsmElfSegmentTableEntry* SgAsmElfSection::*, &SgAsmElfSection::p_segmentEntry>;
4360};
4370template <> struct node_from_variant_t<163> { using type = SgAsmElfSection; };
4371
4372// Class: AsmElfSectionTable
4374 using node = SgAsmElfSectionTable;
4375 using base = SgAsmGenericSection;
4376 static constexpr char const * const name{"AsmElfSectionTable"};
4377 static constexpr unsigned long variant{164};
4378 static constexpr bool concrete{true};
4379 using subclasses_t = mp::List<>;
4380 using fields_t = mp::List<>;
4381};
4382template <> struct node_from_variant_t<164> { using type = SgAsmElfSectionTable; };
4383
4384// Class: AsmElfSectionTableEntry
4385template <> struct describe_field_t<SgAsmElfSectionTableEntry,unsigned,&SgAsmElfSectionTableEntry::p_sh_name> {
4387 using field_type = unsigned;
4388 static constexpr size_t position{0};
4389 static constexpr char const * const name{"sh_name"};
4390 static constexpr char const * const typestr{"unsigned"};
4391 static constexpr bool traverse{false};
4392 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_name};
4393 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4394 using bind = Desc<SgAsmElfSectionTableEntry, unsigned SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_name>;
4395};
4396template <> struct describe_field_t<SgAsmElfSectionTableEntry,SgAsmElfSectionTableEntry::SectionType,&SgAsmElfSectionTableEntry::p_sh_type> {
4399 static constexpr size_t position{1};
4400 static constexpr char const * const name{"sh_type"};
4401 static constexpr char const * const typestr{"SgAsmElfSectionTableEntry::SectionType"};
4402 static constexpr bool traverse{false};
4403 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_type};
4404 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4405 using bind = Desc<SgAsmElfSectionTableEntry, SgAsmElfSectionTableEntry::SectionType SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_type>;
4406};
4407template <> struct describe_field_t<SgAsmElfSectionTableEntry,unsigned long,&SgAsmElfSectionTableEntry::p_sh_link> {
4409 using field_type = unsigned long;
4410 static constexpr size_t position{2};
4411 static constexpr char const * const name{"sh_link"};
4412 static constexpr char const * const typestr{"unsigned long"};
4413 static constexpr bool traverse{false};
4414 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_link};
4415 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4416 using bind = Desc<SgAsmElfSectionTableEntry, unsigned long SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_link>;
4417};
4418template <> struct describe_field_t<SgAsmElfSectionTableEntry,unsigned long,&SgAsmElfSectionTableEntry::p_sh_info> {
4420 using field_type = unsigned long;
4421 static constexpr size_t position{3};
4422 static constexpr char const * const name{"sh_info"};
4423 static constexpr char const * const typestr{"unsigned long"};
4424 static constexpr bool traverse{false};
4425 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_info};
4426 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4427 using bind = Desc<SgAsmElfSectionTableEntry, unsigned long SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_info>;
4428};
4429template <> struct describe_field_t<SgAsmElfSectionTableEntry,uint64_t,&SgAsmElfSectionTableEntry::p_sh_flags> {
4431 using field_type = uint64_t;
4432 static constexpr size_t position{4};
4433 static constexpr char const * const name{"sh_flags"};
4434 static constexpr char const * const typestr{"uint64_t"};
4435 static constexpr bool traverse{false};
4436 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_flags};
4437 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4438 using bind = Desc<SgAsmElfSectionTableEntry, uint64_t SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_flags>;
4439};
4440template <> struct describe_field_t<SgAsmElfSectionTableEntry,rose_addr_t,&SgAsmElfSectionTableEntry::p_sh_addr> {
4442 using field_type = rose_addr_t;
4443 static constexpr size_t position{5};
4444 static constexpr char const * const name{"sh_addr"};
4445 static constexpr char const * const typestr{"rose_addr_t"};
4446 static constexpr bool traverse{false};
4447 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_addr};
4448 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4449 using bind = Desc<SgAsmElfSectionTableEntry, rose_addr_t SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_addr>;
4450};
4451template <> struct describe_field_t<SgAsmElfSectionTableEntry,rose_addr_t,&SgAsmElfSectionTableEntry::p_sh_offset> {
4453 using field_type = rose_addr_t;
4454 static constexpr size_t position{6};
4455 static constexpr char const * const name{"sh_offset"};
4456 static constexpr char const * const typestr{"rose_addr_t"};
4457 static constexpr bool traverse{false};
4458 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_offset};
4459 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4460 using bind = Desc<SgAsmElfSectionTableEntry, rose_addr_t SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_offset>;
4461};
4462template <> struct describe_field_t<SgAsmElfSectionTableEntry,rose_addr_t,&SgAsmElfSectionTableEntry::p_sh_size> {
4464 using field_type = rose_addr_t;
4465 static constexpr size_t position{7};
4466 static constexpr char const * const name{"sh_size"};
4467 static constexpr char const * const typestr{"rose_addr_t"};
4468 static constexpr bool traverse{false};
4469 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_size};
4470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4471 using bind = Desc<SgAsmElfSectionTableEntry, rose_addr_t SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_size>;
4472};
4473template <> struct describe_field_t<SgAsmElfSectionTableEntry,rose_addr_t,&SgAsmElfSectionTableEntry::p_sh_addralign> {
4475 using field_type = rose_addr_t;
4476 static constexpr size_t position{8};
4477 static constexpr char const * const name{"sh_addralign"};
4478 static constexpr char const * const typestr{"rose_addr_t"};
4479 static constexpr bool traverse{false};
4480 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_addralign};
4481 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4482 using bind = Desc<SgAsmElfSectionTableEntry, rose_addr_t SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_addralign>;
4483};
4484template <> struct describe_field_t<SgAsmElfSectionTableEntry,rose_addr_t,&SgAsmElfSectionTableEntry::p_sh_entsize> {
4486 using field_type = rose_addr_t;
4487 static constexpr size_t position{9};
4488 static constexpr char const * const name{"sh_entsize"};
4489 static constexpr char const * const typestr{"rose_addr_t"};
4490 static constexpr bool traverse{false};
4491 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_sh_entsize};
4492 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4493 using bind = Desc<SgAsmElfSectionTableEntry, rose_addr_t SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_sh_entsize>;
4494};
4495template <> struct describe_field_t<SgAsmElfSectionTableEntry,SgUnsignedCharList,&SgAsmElfSectionTableEntry::p_extra> {
4497 using field_type = SgUnsignedCharList;
4498 static constexpr size_t position{10};
4499 static constexpr char const * const name{"extra"};
4500 static constexpr char const * const typestr{"SgUnsignedCharList"};
4501 static constexpr bool traverse{false};
4502 static constexpr auto mbr_ptr{&SgAsmElfSectionTableEntry::p_extra};
4503 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4504 using bind = Desc<SgAsmElfSectionTableEntry, SgUnsignedCharList SgAsmElfSectionTableEntry::*, &SgAsmElfSectionTableEntry::p_extra>;
4505};
4515template <> struct node_from_variant_t<165> { using type = SgAsmElfSectionTableEntry; };
4516
4517// Class: AsmElfSegmentTable
4519 using node = SgAsmElfSegmentTable;
4520 using base = SgAsmGenericSection;
4521 static constexpr char const * const name{"AsmElfSegmentTable"};
4522 static constexpr unsigned long variant{166};
4523 static constexpr bool concrete{true};
4524 using subclasses_t = mp::List<>;
4525 using fields_t = mp::List<>;
4526};
4527template <> struct node_from_variant_t<166> { using type = SgAsmElfSegmentTable; };
4528
4529// Class: AsmElfSegmentTableEntry
4530template <> struct describe_field_t<SgAsmElfSegmentTableEntry,size_t,&SgAsmElfSegmentTableEntry::p_index> {
4532 using field_type = size_t;
4533 static constexpr size_t position{0};
4534 static constexpr char const * const name{"index"};
4535 static constexpr char const * const typestr{"size_t"};
4536 static constexpr bool traverse{false};
4537 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_index};
4538 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4539 using bind = Desc<SgAsmElfSegmentTableEntry, size_t SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_index>;
4540};
4541template <> struct describe_field_t<SgAsmElfSegmentTableEntry,SgAsmElfSegmentTableEntry::SegmentType,&SgAsmElfSegmentTableEntry::p_type> {
4544 static constexpr size_t position{1};
4545 static constexpr char const * const name{"type"};
4546 static constexpr char const * const typestr{"SgAsmElfSegmentTableEntry::SegmentType"};
4547 static constexpr bool traverse{false};
4548 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_type};
4549 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4550 using bind = Desc<SgAsmElfSegmentTableEntry, SgAsmElfSegmentTableEntry::SegmentType SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_type>;
4551};
4552template <> struct describe_field_t<SgAsmElfSegmentTableEntry,SgAsmElfSegmentTableEntry::SegmentFlags,&SgAsmElfSegmentTableEntry::p_flags> {
4555 static constexpr size_t position{2};
4556 static constexpr char const * const name{"flags"};
4557 static constexpr char const * const typestr{"SgAsmElfSegmentTableEntry::SegmentFlags"};
4558 static constexpr bool traverse{false};
4559 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_flags};
4560 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4561 using bind = Desc<SgAsmElfSegmentTableEntry, SgAsmElfSegmentTableEntry::SegmentFlags SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_flags>;
4562};
4563template <> struct describe_field_t<SgAsmElfSegmentTableEntry,rose_addr_t,&SgAsmElfSegmentTableEntry::p_offset> {
4565 using field_type = rose_addr_t;
4566 static constexpr size_t position{3};
4567 static constexpr char const * const name{"offset"};
4568 static constexpr char const * const typestr{"rose_addr_t"};
4569 static constexpr bool traverse{false};
4570 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_offset};
4571 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4572 using bind = Desc<SgAsmElfSegmentTableEntry, rose_addr_t SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_offset>;
4573};
4574template <> struct describe_field_t<SgAsmElfSegmentTableEntry,rose_addr_t,&SgAsmElfSegmentTableEntry::p_vaddr> {
4576 using field_type = rose_addr_t;
4577 static constexpr size_t position{4};
4578 static constexpr char const * const name{"vaddr"};
4579 static constexpr char const * const typestr{"rose_addr_t"};
4580 static constexpr bool traverse{false};
4581 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_vaddr};
4582 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4583 using bind = Desc<SgAsmElfSegmentTableEntry, rose_addr_t SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_vaddr>;
4584};
4585template <> struct describe_field_t<SgAsmElfSegmentTableEntry,rose_addr_t,&SgAsmElfSegmentTableEntry::p_paddr> {
4587 using field_type = rose_addr_t;
4588 static constexpr size_t position{5};
4589 static constexpr char const * const name{"paddr"};
4590 static constexpr char const * const typestr{"rose_addr_t"};
4591 static constexpr bool traverse{false};
4592 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_paddr};
4593 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4594 using bind = Desc<SgAsmElfSegmentTableEntry, rose_addr_t SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_paddr>;
4595};
4596template <> struct describe_field_t<SgAsmElfSegmentTableEntry,rose_addr_t,&SgAsmElfSegmentTableEntry::p_filesz> {
4598 using field_type = rose_addr_t;
4599 static constexpr size_t position{6};
4600 static constexpr char const * const name{"filesz"};
4601 static constexpr char const * const typestr{"rose_addr_t"};
4602 static constexpr bool traverse{false};
4603 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_filesz};
4604 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4605 using bind = Desc<SgAsmElfSegmentTableEntry, rose_addr_t SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_filesz>;
4606};
4607template <> struct describe_field_t<SgAsmElfSegmentTableEntry,rose_addr_t,&SgAsmElfSegmentTableEntry::p_memsz> {
4609 using field_type = rose_addr_t;
4610 static constexpr size_t position{7};
4611 static constexpr char const * const name{"memsz"};
4612 static constexpr char const * const typestr{"rose_addr_t"};
4613 static constexpr bool traverse{false};
4614 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_memsz};
4615 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4616 using bind = Desc<SgAsmElfSegmentTableEntry, rose_addr_t SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_memsz>;
4617};
4618template <> struct describe_field_t<SgAsmElfSegmentTableEntry,rose_addr_t,&SgAsmElfSegmentTableEntry::p_align> {
4620 using field_type = rose_addr_t;
4621 static constexpr size_t position{8};
4622 static constexpr char const * const name{"align"};
4623 static constexpr char const * const typestr{"rose_addr_t"};
4624 static constexpr bool traverse{false};
4625 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_align};
4626 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4627 using bind = Desc<SgAsmElfSegmentTableEntry, rose_addr_t SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_align>;
4628};
4629template <> struct describe_field_t<SgAsmElfSegmentTableEntry,SgUnsignedCharList,&SgAsmElfSegmentTableEntry::p_extra> {
4631 using field_type = SgUnsignedCharList;
4632 static constexpr size_t position{9};
4633 static constexpr char const * const name{"extra"};
4634 static constexpr char const * const typestr{"SgUnsignedCharList"};
4635 static constexpr bool traverse{false};
4636 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntry::p_extra};
4637 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4638 using bind = Desc<SgAsmElfSegmentTableEntry, SgUnsignedCharList SgAsmElfSegmentTableEntry::*, &SgAsmElfSegmentTableEntry::p_extra>;
4639};
4649template <> struct node_from_variant_t<167> { using type = SgAsmElfSegmentTableEntry; };
4650
4651// Class: AsmElfSegmentTableEntryList
4652template <> struct describe_field_t<SgAsmElfSegmentTableEntryList,SgAsmElfSegmentTableEntryPtrList,&SgAsmElfSegmentTableEntryList::p_entries> {
4654 using field_type = SgAsmElfSegmentTableEntryPtrList;
4655 static constexpr size_t position{0};
4656 static constexpr char const * const name{"entries"};
4657 static constexpr char const * const typestr{"SgAsmElfSegmentTableEntryPtrList"};
4658 static constexpr bool traverse{true};
4659 static constexpr auto mbr_ptr{&SgAsmElfSegmentTableEntryList::p_entries};
4660 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4661 using bind = Desc<SgAsmElfSegmentTableEntryList, SgAsmElfSegmentTableEntryPtrList SgAsmElfSegmentTableEntryList::*, &SgAsmElfSegmentTableEntryList::p_entries>;
4662};
4666 static constexpr char const * const name{"AsmElfSegmentTableEntryList"};
4667 static constexpr unsigned long variant{168};
4668 static constexpr bool concrete{true};
4669 using subclasses_t = mp::List<>;
4671};
4672template <> struct node_from_variant_t<168> { using type = SgAsmElfSegmentTableEntryList; };
4673
4674// Class: AsmElfStringSection
4675template <> struct describe_field_t<SgAsmElfStringSection,SgAsmElfStrtab*,&SgAsmElfStringSection::p_strtab> {
4677 using field_type = SgAsmElfStrtab*;
4678 static constexpr size_t position{0};
4679 static constexpr char const * const name{"strtab"};
4680 static constexpr char const * const typestr{"SgAsmElfStrtab*"};
4681 static constexpr bool traverse{false};
4682 static constexpr auto mbr_ptr{&SgAsmElfStringSection::p_strtab};
4683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4684 using bind = Desc<SgAsmElfStringSection, SgAsmElfStrtab* SgAsmElfStringSection::*, &SgAsmElfStringSection::p_strtab>;
4685};
4688 using base = SgAsmElfSection;
4689 static constexpr char const * const name{"AsmElfStringSection"};
4690 static constexpr unsigned long variant{169};
4691 static constexpr bool concrete{true};
4692 using subclasses_t = mp::List<>;
4694};
4695template <> struct node_from_variant_t<169> { using type = SgAsmElfStringSection; };
4696
4697// Class: AsmElfStrtab
4698template <> struct describe_node_t<SgAsmElfStrtab> {
4699 using node = SgAsmElfStrtab;
4700 using base = SgAsmGenericStrtab;
4701 static constexpr char const * const name{"AsmElfStrtab"};
4702 static constexpr unsigned long variant{170};
4703 static constexpr bool concrete{true};
4704 using subclasses_t = mp::List<>;
4705 using fields_t = mp::List<>;
4706};
4707template <> struct node_from_variant_t<170> { using type = SgAsmElfStrtab; };
4708
4709// Class: AsmElfSymbol
4710template <> struct describe_field_t<SgAsmElfSymbol,unsigned char,&SgAsmElfSymbol::p_st_info> {
4711 using parent = SgAsmElfSymbol;
4712 using field_type = unsigned char;
4713 static constexpr size_t position{0};
4714 static constexpr char const * const name{"st_info"};
4715 static constexpr char const * const typestr{"unsigned char"};
4716 static constexpr bool traverse{false};
4717 static constexpr auto mbr_ptr{&SgAsmElfSymbol::p_st_info};
4718 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4719 using bind = Desc<SgAsmElfSymbol, unsigned char SgAsmElfSymbol::*, &SgAsmElfSymbol::p_st_info>;
4720};
4721template <> struct describe_field_t<SgAsmElfSymbol,unsigned char,&SgAsmElfSymbol::p_st_res1> {
4722 using parent = SgAsmElfSymbol;
4723 using field_type = unsigned char;
4724 static constexpr size_t position{1};
4725 static constexpr char const * const name{"st_res1"};
4726 static constexpr char const * const typestr{"unsigned char"};
4727 static constexpr bool traverse{false};
4728 static constexpr auto mbr_ptr{&SgAsmElfSymbol::p_st_res1};
4729 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4730 using bind = Desc<SgAsmElfSymbol, unsigned char SgAsmElfSymbol::*, &SgAsmElfSymbol::p_st_res1>;
4731};
4732template <> struct describe_field_t<SgAsmElfSymbol,unsigned,&SgAsmElfSymbol::p_st_shndx> {
4733 using parent = SgAsmElfSymbol;
4734 using field_type = unsigned;
4735 static constexpr size_t position{2};
4736 static constexpr char const * const name{"st_shndx"};
4737 static constexpr char const * const typestr{"unsigned"};
4738 static constexpr bool traverse{false};
4739 static constexpr auto mbr_ptr{&SgAsmElfSymbol::p_st_shndx};
4740 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4741 using bind = Desc<SgAsmElfSymbol, unsigned SgAsmElfSymbol::*, &SgAsmElfSymbol::p_st_shndx>;
4742};
4743template <> struct describe_field_t<SgAsmElfSymbol,rose_addr_t,&SgAsmElfSymbol::p_st_size> {
4744 using parent = SgAsmElfSymbol;
4745 using field_type = rose_addr_t;
4746 static constexpr size_t position{3};
4747 static constexpr char const * const name{"st_size"};
4748 static constexpr char const * const typestr{"rose_addr_t"};
4749 static constexpr bool traverse{false};
4750 static constexpr auto mbr_ptr{&SgAsmElfSymbol::p_st_size};
4751 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4752 using bind = Desc<SgAsmElfSymbol, rose_addr_t SgAsmElfSymbol::*, &SgAsmElfSymbol::p_st_size>;
4753};
4754template <> struct describe_field_t<SgAsmElfSymbol,SgUnsignedCharList,&SgAsmElfSymbol::p_extra> {
4755 using parent = SgAsmElfSymbol;
4756 using field_type = SgUnsignedCharList;
4757 static constexpr size_t position{4};
4758 static constexpr char const * const name{"extra"};
4759 static constexpr char const * const typestr{"SgUnsignedCharList"};
4760 static constexpr bool traverse{false};
4761 static constexpr auto mbr_ptr{&SgAsmElfSymbol::p_extra};
4762 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4763 using bind = Desc<SgAsmElfSymbol, SgUnsignedCharList SgAsmElfSymbol::*, &SgAsmElfSymbol::p_extra>;
4764};
4774template <> struct node_from_variant_t<171> { using type = SgAsmElfSymbol; };
4775
4776// Class: AsmElfSymbolList
4777template <> struct describe_field_t<SgAsmElfSymbolList,SgAsmElfSymbolPtrList,&SgAsmElfSymbolList::p_symbols> {
4778 using parent = SgAsmElfSymbolList;
4779 using field_type = SgAsmElfSymbolPtrList;
4780 static constexpr size_t position{0};
4781 static constexpr char const * const name{"symbols"};
4782 static constexpr char const * const typestr{"SgAsmElfSymbolPtrList"};
4783 static constexpr bool traverse{true};
4784 static constexpr auto mbr_ptr{&SgAsmElfSymbolList::p_symbols};
4785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4786 using bind = Desc<SgAsmElfSymbolList, SgAsmElfSymbolPtrList SgAsmElfSymbolList::*, &SgAsmElfSymbolList::p_symbols>;
4787};
4789 using node = SgAsmElfSymbolList;
4791 static constexpr char const * const name{"AsmElfSymbolList"};
4792 static constexpr unsigned long variant{172};
4793 static constexpr bool concrete{true};
4794 using subclasses_t = mp::List<>;
4796};
4797template <> struct node_from_variant_t<172> { using type = SgAsmElfSymbolList; };
4798
4799// Class: AsmElfSymbolSection
4800template <> struct describe_field_t<SgAsmElfSymbolSection,bool,&SgAsmElfSymbolSection::p_isDynamic> {
4802 using field_type = bool;
4803 static constexpr size_t position{0};
4804 static constexpr char const * const name{"isDynamic"};
4805 static constexpr char const * const typestr{"bool"};
4806 static constexpr bool traverse{false};
4807 static constexpr auto mbr_ptr{&SgAsmElfSymbolSection::p_isDynamic};
4808 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4809 using bind = Desc<SgAsmElfSymbolSection, bool SgAsmElfSymbolSection::*, &SgAsmElfSymbolSection::p_isDynamic>;
4810};
4811template <> struct describe_field_t<SgAsmElfSymbolSection,SgAsmElfSymbolList*,&SgAsmElfSymbolSection::p_symbols> {
4814 static constexpr size_t position{1};
4815 static constexpr char const * const name{"symbols"};
4816 static constexpr char const * const typestr{"SgAsmElfSymbolList*"};
4817 static constexpr bool traverse{true};
4818 static constexpr auto mbr_ptr{&SgAsmElfSymbolSection::p_symbols};
4819 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4820 using bind = Desc<SgAsmElfSymbolSection, SgAsmElfSymbolList* SgAsmElfSymbolSection::*, &SgAsmElfSymbolSection::p_symbols>;
4821};
4824 using base = SgAsmElfSection;
4825 static constexpr char const * const name{"AsmElfSymbolSection"};
4826 static constexpr unsigned long variant{173};
4827 static constexpr bool concrete{true};
4828 using subclasses_t = mp::List<>;
4830};
4831template <> struct node_from_variant_t<173> { using type = SgAsmElfSymbolSection; };
4832
4833// Class: AsmElfSymverDefinedAux
4834template <> struct describe_field_t<SgAsmElfSymverDefinedAux,SgAsmGenericString*,&SgAsmElfSymverDefinedAux::p_name> {
4837 static constexpr size_t position{0};
4838 static constexpr char const * const name{"name"};
4839 static constexpr char const * const typestr{"SgAsmGenericString*"};
4840 static constexpr bool traverse{true};
4841 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedAux::p_name};
4842 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4843 using bind = Desc<SgAsmElfSymverDefinedAux, SgAsmGenericString* SgAsmElfSymverDefinedAux::*, &SgAsmElfSymverDefinedAux::p_name>;
4844};
4848 static constexpr char const * const name{"AsmElfSymverDefinedAux"};
4849 static constexpr unsigned long variant{174};
4850 static constexpr bool concrete{true};
4851 using subclasses_t = mp::List<>;
4853};
4854template <> struct node_from_variant_t<174> { using type = SgAsmElfSymverDefinedAux; };
4855
4856// Class: AsmElfSymverDefinedAuxList
4857template <> struct describe_field_t<SgAsmElfSymverDefinedAuxList,SgAsmElfSymverDefinedAuxPtrList,&SgAsmElfSymverDefinedAuxList::p_entries> {
4859 using field_type = SgAsmElfSymverDefinedAuxPtrList;
4860 static constexpr size_t position{0};
4861 static constexpr char const * const name{"entries"};
4862 static constexpr char const * const typestr{"SgAsmElfSymverDefinedAuxPtrList"};
4863 static constexpr bool traverse{true};
4864 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedAuxList::p_entries};
4865 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4866 using bind = Desc<SgAsmElfSymverDefinedAuxList, SgAsmElfSymverDefinedAuxPtrList SgAsmElfSymverDefinedAuxList::*, &SgAsmElfSymverDefinedAuxList::p_entries>;
4867};
4871 static constexpr char const * const name{"AsmElfSymverDefinedAuxList"};
4872 static constexpr unsigned long variant{175};
4873 static constexpr bool concrete{true};
4874 using subclasses_t = mp::List<>;
4876};
4877template <> struct node_from_variant_t<175> { using type = SgAsmElfSymverDefinedAuxList; };
4878
4879// Class: AsmElfSymverDefinedEntry
4880template <> struct describe_field_t<SgAsmElfSymverDefinedEntry,size_t,&SgAsmElfSymverDefinedEntry::p_version> {
4882 using field_type = size_t;
4883 static constexpr size_t position{0};
4884 static constexpr char const * const name{"version"};
4885 static constexpr char const * const typestr{"size_t"};
4886 static constexpr bool traverse{false};
4887 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedEntry::p_version};
4888 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4889 using bind = Desc<SgAsmElfSymverDefinedEntry, size_t SgAsmElfSymverDefinedEntry::*, &SgAsmElfSymverDefinedEntry::p_version>;
4890};
4891template <> struct describe_field_t<SgAsmElfSymverDefinedEntry,int,&SgAsmElfSymverDefinedEntry::p_flags> {
4893 using field_type = int;
4894 static constexpr size_t position{1};
4895 static constexpr char const * const name{"flags"};
4896 static constexpr char const * const typestr{"int"};
4897 static constexpr bool traverse{false};
4898 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedEntry::p_flags};
4899 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4900 using bind = Desc<SgAsmElfSymverDefinedEntry, int SgAsmElfSymverDefinedEntry::*, &SgAsmElfSymverDefinedEntry::p_flags>;
4901};
4902template <> struct describe_field_t<SgAsmElfSymverDefinedEntry,size_t,&SgAsmElfSymverDefinedEntry::p_index> {
4904 using field_type = size_t;
4905 static constexpr size_t position{2};
4906 static constexpr char const * const name{"index"};
4907 static constexpr char const * const typestr{"size_t"};
4908 static constexpr bool traverse{false};
4909 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedEntry::p_index};
4910 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4911 using bind = Desc<SgAsmElfSymverDefinedEntry, size_t SgAsmElfSymverDefinedEntry::*, &SgAsmElfSymverDefinedEntry::p_index>;
4912};
4913template <> struct describe_field_t<SgAsmElfSymverDefinedEntry,uint32_t,&SgAsmElfSymverDefinedEntry::p_hash> {
4915 using field_type = uint32_t;
4916 static constexpr size_t position{3};
4917 static constexpr char const * const name{"hash"};
4918 static constexpr char const * const typestr{"uint32_t"};
4919 static constexpr bool traverse{false};
4920 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedEntry::p_hash};
4921 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4922 using bind = Desc<SgAsmElfSymverDefinedEntry, uint32_t SgAsmElfSymverDefinedEntry::*, &SgAsmElfSymverDefinedEntry::p_hash>;
4923};
4924template <> struct describe_field_t<SgAsmElfSymverDefinedEntry,SgAsmElfSymverDefinedAuxList*,&SgAsmElfSymverDefinedEntry::p_entries> {
4927 static constexpr size_t position{4};
4928 static constexpr char const * const name{"entries"};
4929 static constexpr char const * const typestr{"SgAsmElfSymverDefinedAuxList*"};
4930 static constexpr bool traverse{true};
4931 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedEntry::p_entries};
4932 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4933 using bind = Desc<SgAsmElfSymverDefinedEntry, SgAsmElfSymverDefinedAuxList* SgAsmElfSymverDefinedEntry::*, &SgAsmElfSymverDefinedEntry::p_entries>;
4934};
4944template <> struct node_from_variant_t<176> { using type = SgAsmElfSymverDefinedEntry; };
4945
4946// Class: AsmElfSymverDefinedEntryList
4947template <> struct describe_field_t<SgAsmElfSymverDefinedEntryList,SgAsmElfSymverDefinedEntryPtrList,&SgAsmElfSymverDefinedEntryList::p_entries> {
4949 using field_type = SgAsmElfSymverDefinedEntryPtrList;
4950 static constexpr size_t position{0};
4951 static constexpr char const * const name{"entries"};
4952 static constexpr char const * const typestr{"SgAsmElfSymverDefinedEntryPtrList"};
4953 static constexpr bool traverse{true};
4954 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedEntryList::p_entries};
4955 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4956 using bind = Desc<SgAsmElfSymverDefinedEntryList, SgAsmElfSymverDefinedEntryPtrList SgAsmElfSymverDefinedEntryList::*, &SgAsmElfSymverDefinedEntryList::p_entries>;
4957};
4961 static constexpr char const * const name{"AsmElfSymverDefinedEntryList"};
4962 static constexpr unsigned long variant{177};
4963 static constexpr bool concrete{true};
4964 using subclasses_t = mp::List<>;
4966};
4967template <> struct node_from_variant_t<177> { using type = SgAsmElfSymverDefinedEntryList; };
4968
4969// Class: AsmElfSymverDefinedSection
4970template <> struct describe_field_t<SgAsmElfSymverDefinedSection,SgAsmElfSymverDefinedEntryList*,&SgAsmElfSymverDefinedSection::p_entries> {
4973 static constexpr size_t position{0};
4974 static constexpr char const * const name{"entries"};
4975 static constexpr char const * const typestr{"SgAsmElfSymverDefinedEntryList*"};
4976 static constexpr bool traverse{true};
4977 static constexpr auto mbr_ptr{&SgAsmElfSymverDefinedSection::p_entries};
4978 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
4979 using bind = Desc<SgAsmElfSymverDefinedSection, SgAsmElfSymverDefinedEntryList* SgAsmElfSymverDefinedSection::*, &SgAsmElfSymverDefinedSection::p_entries>;
4980};
4983 using base = SgAsmElfSection;
4984 static constexpr char const * const name{"AsmElfSymverDefinedSection"};
4985 static constexpr unsigned long variant{178};
4986 static constexpr bool concrete{true};
4987 using subclasses_t = mp::List<>;
4989};
4990template <> struct node_from_variant_t<178> { using type = SgAsmElfSymverDefinedSection; };
4991
4992// Class: AsmElfSymverEntry
4993template <> struct describe_field_t<SgAsmElfSymverEntry,size_t,&SgAsmElfSymverEntry::p_value> {
4995 using field_type = size_t;
4996 static constexpr size_t position{0};
4997 static constexpr char const * const name{"value"};
4998 static constexpr char const * const typestr{"size_t"};
4999 static constexpr bool traverse{false};
5000 static constexpr auto mbr_ptr{&SgAsmElfSymverEntry::p_value};
5001 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5002 using bind = Desc<SgAsmElfSymverEntry, size_t SgAsmElfSymverEntry::*, &SgAsmElfSymverEntry::p_value>;
5003};
5005 using node = SgAsmElfSymverEntry;
5007 static constexpr char const * const name{"AsmElfSymverEntry"};
5008 static constexpr unsigned long variant{179};
5009 static constexpr bool concrete{true};
5010 using subclasses_t = mp::List<>;
5012};
5013template <> struct node_from_variant_t<179> { using type = SgAsmElfSymverEntry; };
5014
5015// Class: AsmElfSymverEntryList
5016template <> struct describe_field_t<SgAsmElfSymverEntryList,SgAsmElfSymverEntryPtrList,&SgAsmElfSymverEntryList::p_entries> {
5018 using field_type = SgAsmElfSymverEntryPtrList;
5019 static constexpr size_t position{0};
5020 static constexpr char const * const name{"entries"};
5021 static constexpr char const * const typestr{"SgAsmElfSymverEntryPtrList"};
5022 static constexpr bool traverse{true};
5023 static constexpr auto mbr_ptr{&SgAsmElfSymverEntryList::p_entries};
5024 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5025 using bind = Desc<SgAsmElfSymverEntryList, SgAsmElfSymverEntryPtrList SgAsmElfSymverEntryList::*, &SgAsmElfSymverEntryList::p_entries>;
5026};
5030 static constexpr char const * const name{"AsmElfSymverEntryList"};
5031 static constexpr unsigned long variant{180};
5032 static constexpr bool concrete{true};
5033 using subclasses_t = mp::List<>;
5035};
5036template <> struct node_from_variant_t<180> { using type = SgAsmElfSymverEntryList; };
5037
5038// Class: AsmElfSymverNeededAux
5039template <> struct describe_field_t<SgAsmElfSymverNeededAux,uint32_t,&SgAsmElfSymverNeededAux::p_hash> {
5041 using field_type = uint32_t;
5042 static constexpr size_t position{0};
5043 static constexpr char const * const name{"hash"};
5044 static constexpr char const * const typestr{"uint32_t"};
5045 static constexpr bool traverse{false};
5046 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededAux::p_hash};
5047 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5048 using bind = Desc<SgAsmElfSymverNeededAux, uint32_t SgAsmElfSymverNeededAux::*, &SgAsmElfSymverNeededAux::p_hash>;
5049};
5050template <> struct describe_field_t<SgAsmElfSymverNeededAux,int,&SgAsmElfSymverNeededAux::p_flags> {
5052 using field_type = int;
5053 static constexpr size_t position{1};
5054 static constexpr char const * const name{"flags"};
5055 static constexpr char const * const typestr{"int"};
5056 static constexpr bool traverse{false};
5057 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededAux::p_flags};
5058 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5059 using bind = Desc<SgAsmElfSymverNeededAux, int SgAsmElfSymverNeededAux::*, &SgAsmElfSymverNeededAux::p_flags>;
5060};
5061template <> struct describe_field_t<SgAsmElfSymverNeededAux,size_t,&SgAsmElfSymverNeededAux::p_other> {
5063 using field_type = size_t;
5064 static constexpr size_t position{2};
5065 static constexpr char const * const name{"other"};
5066 static constexpr char const * const typestr{"size_t"};
5067 static constexpr bool traverse{false};
5068 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededAux::p_other};
5069 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5070 using bind = Desc<SgAsmElfSymverNeededAux, size_t SgAsmElfSymverNeededAux::*, &SgAsmElfSymverNeededAux::p_other>;
5071};
5072template <> struct describe_field_t<SgAsmElfSymverNeededAux,SgAsmGenericString*,&SgAsmElfSymverNeededAux::p_name> {
5075 static constexpr size_t position{3};
5076 static constexpr char const * const name{"name"};
5077 static constexpr char const * const typestr{"SgAsmGenericString*"};
5078 static constexpr bool traverse{true};
5079 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededAux::p_name};
5080 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5081 using bind = Desc<SgAsmElfSymverNeededAux, SgAsmGenericString* SgAsmElfSymverNeededAux::*, &SgAsmElfSymverNeededAux::p_name>;
5082};
5092template <> struct node_from_variant_t<181> { using type = SgAsmElfSymverNeededAux; };
5093
5094// Class: AsmElfSymverNeededAuxList
5095template <> struct describe_field_t<SgAsmElfSymverNeededAuxList,SgAsmElfSymverNeededAuxPtrList,&SgAsmElfSymverNeededAuxList::p_entries> {
5097 using field_type = SgAsmElfSymverNeededAuxPtrList;
5098 static constexpr size_t position{0};
5099 static constexpr char const * const name{"entries"};
5100 static constexpr char const * const typestr{"SgAsmElfSymverNeededAuxPtrList"};
5101 static constexpr bool traverse{true};
5102 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededAuxList::p_entries};
5103 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5104 using bind = Desc<SgAsmElfSymverNeededAuxList, SgAsmElfSymverNeededAuxPtrList SgAsmElfSymverNeededAuxList::*, &SgAsmElfSymverNeededAuxList::p_entries>;
5105};
5109 static constexpr char const * const name{"AsmElfSymverNeededAuxList"};
5110 static constexpr unsigned long variant{182};
5111 static constexpr bool concrete{true};
5112 using subclasses_t = mp::List<>;
5114};
5115template <> struct node_from_variant_t<182> { using type = SgAsmElfSymverNeededAuxList; };
5116
5117// Class: AsmElfSymverNeededEntry
5118template <> struct describe_field_t<SgAsmElfSymverNeededEntry,size_t,&SgAsmElfSymverNeededEntry::p_version> {
5120 using field_type = size_t;
5121 static constexpr size_t position{0};
5122 static constexpr char const * const name{"version"};
5123 static constexpr char const * const typestr{"size_t"};
5124 static constexpr bool traverse{false};
5125 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededEntry::p_version};
5126 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5127 using bind = Desc<SgAsmElfSymverNeededEntry, size_t SgAsmElfSymverNeededEntry::*, &SgAsmElfSymverNeededEntry::p_version>;
5128};
5129template <> struct describe_field_t<SgAsmElfSymverNeededEntry,SgAsmGenericString*,&SgAsmElfSymverNeededEntry::p_fileName> {
5132 static constexpr size_t position{1};
5133 static constexpr char const * const name{"fileName"};
5134 static constexpr char const * const typestr{"SgAsmGenericString*"};
5135 static constexpr bool traverse{true};
5136 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededEntry::p_fileName};
5137 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5138 using bind = Desc<SgAsmElfSymverNeededEntry, SgAsmGenericString* SgAsmElfSymverNeededEntry::*, &SgAsmElfSymverNeededEntry::p_fileName>;
5139};
5140template <> struct describe_field_t<SgAsmElfSymverNeededEntry,SgAsmElfSymverNeededAuxList*,&SgAsmElfSymverNeededEntry::p_entries> {
5143 static constexpr size_t position{2};
5144 static constexpr char const * const name{"entries"};
5145 static constexpr char const * const typestr{"SgAsmElfSymverNeededAuxList*"};
5146 static constexpr bool traverse{true};
5147 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededEntry::p_entries};
5148 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5149 using bind = Desc<SgAsmElfSymverNeededEntry, SgAsmElfSymverNeededAuxList* SgAsmElfSymverNeededEntry::*, &SgAsmElfSymverNeededEntry::p_entries>;
5150};
5160template <> struct node_from_variant_t<183> { using type = SgAsmElfSymverNeededEntry; };
5161
5162// Class: AsmElfSymverNeededEntryList
5163template <> struct describe_field_t<SgAsmElfSymverNeededEntryList,SgAsmElfSymverNeededEntryPtrList,&SgAsmElfSymverNeededEntryList::p_entries> {
5165 using field_type = SgAsmElfSymverNeededEntryPtrList;
5166 static constexpr size_t position{0};
5167 static constexpr char const * const name{"entries"};
5168 static constexpr char const * const typestr{"SgAsmElfSymverNeededEntryPtrList"};
5169 static constexpr bool traverse{true};
5170 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededEntryList::p_entries};
5171 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5172 using bind = Desc<SgAsmElfSymverNeededEntryList, SgAsmElfSymverNeededEntryPtrList SgAsmElfSymverNeededEntryList::*, &SgAsmElfSymverNeededEntryList::p_entries>;
5173};
5177 static constexpr char const * const name{"AsmElfSymverNeededEntryList"};
5178 static constexpr unsigned long variant{184};
5179 static constexpr bool concrete{true};
5180 using subclasses_t = mp::List<>;
5182};
5183template <> struct node_from_variant_t<184> { using type = SgAsmElfSymverNeededEntryList; };
5184
5185// Class: AsmElfSymverNeededSection
5186template <> struct describe_field_t<SgAsmElfSymverNeededSection,SgAsmElfSymverNeededEntryList*,&SgAsmElfSymverNeededSection::p_entries> {
5189 static constexpr size_t position{0};
5190 static constexpr char const * const name{"entries"};
5191 static constexpr char const * const typestr{"SgAsmElfSymverNeededEntryList*"};
5192 static constexpr bool traverse{true};
5193 static constexpr auto mbr_ptr{&SgAsmElfSymverNeededSection::p_entries};
5194 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5195 using bind = Desc<SgAsmElfSymverNeededSection, SgAsmElfSymverNeededEntryList* SgAsmElfSymverNeededSection::*, &SgAsmElfSymverNeededSection::p_entries>;
5196};
5199 using base = SgAsmElfSection;
5200 static constexpr char const * const name{"AsmElfSymverNeededSection"};
5201 static constexpr unsigned long variant{185};
5202 static constexpr bool concrete{true};
5203 using subclasses_t = mp::List<>;
5205};
5206template <> struct node_from_variant_t<185> { using type = SgAsmElfSymverNeededSection; };
5207
5208// Class: AsmElfSymverSection
5209template <> struct describe_field_t<SgAsmElfSymverSection,SgAsmElfSymverEntryList*,&SgAsmElfSymverSection::p_entries> {
5212 static constexpr size_t position{0};
5213 static constexpr char const * const name{"entries"};
5214 static constexpr char const * const typestr{"SgAsmElfSymverEntryList*"};
5215 static constexpr bool traverse{true};
5216 static constexpr auto mbr_ptr{&SgAsmElfSymverSection::p_entries};
5217 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5218 using bind = Desc<SgAsmElfSymverSection, SgAsmElfSymverEntryList* SgAsmElfSymverSection::*, &SgAsmElfSymverSection::p_entries>;
5219};
5222 using base = SgAsmElfSection;
5223 static constexpr char const * const name{"AsmElfSymverSection"};
5224 static constexpr unsigned long variant{186};
5225 static constexpr bool concrete{true};
5226 using subclasses_t = mp::List<>;
5228};
5229template <> struct node_from_variant_t<186> { using type = SgAsmElfSymverSection; };
5230
5231// Class: AsmExecutableFileFormat
5234 using base = SgAsmNode;
5235 static constexpr char const * const name{"AsmExecutableFileFormat"};
5236 static constexpr unsigned long variant{187};
5237 static constexpr bool concrete{false};
5239 using fields_t = mp::List<>;
5240};
5241template <> struct node_from_variant_t<187> { using type = SgAsmExecutableFileFormat; };
5242
5243// Class: AsmExprListExp
5244template <> struct describe_field_t<SgAsmExprListExp,SgAsmExpressionPtrList,&SgAsmExprListExp::p_expressions> {
5245 using parent = SgAsmExprListExp;
5246 using field_type = SgAsmExpressionPtrList;
5247 static constexpr size_t position{0};
5248 static constexpr char const * const name{"expressions"};
5249 static constexpr char const * const typestr{"SgAsmExpressionPtrList"};
5250 static constexpr bool traverse{true};
5251 static constexpr auto mbr_ptr{&SgAsmExprListExp::p_expressions};
5252 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5253 using bind = Desc<SgAsmExprListExp, SgAsmExpressionPtrList SgAsmExprListExp::*, &SgAsmExprListExp::p_expressions>;
5254};
5256 using node = SgAsmExprListExp;
5257 using base = SgAsmExpression;
5258 static constexpr char const * const name{"AsmExprListExp"};
5259 static constexpr unsigned long variant{188};
5260 static constexpr bool concrete{true};
5261 using subclasses_t = mp::List<>;
5263};
5264template <> struct node_from_variant_t<188> { using type = SgAsmExprListExp; };
5265
5266// Class: AsmExpression
5267template <> struct describe_field_t<SgAsmExpression,SgAsmType*,&SgAsmExpression::p_type> {
5268 using parent = SgAsmExpression;
5269 using field_type = SgAsmType*;
5270 static constexpr size_t position{0};
5271 static constexpr char const * const name{"type"};
5272 static constexpr char const * const typestr{"SgAsmType*"};
5273 static constexpr bool traverse{false};
5274 static constexpr auto mbr_ptr{&SgAsmExpression::p_type};
5275 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5276 using bind = Desc<SgAsmExpression, SgAsmType* SgAsmExpression::*, &SgAsmExpression::p_type>;
5277};
5278template <> struct describe_field_t<SgAsmExpression,std::string,&SgAsmExpression::p_comment> {
5279 using parent = SgAsmExpression;
5280 using field_type = std::string;
5281 static constexpr size_t position{1};
5282 static constexpr char const * const name{"comment"};
5283 static constexpr char const * const typestr{"std::string"};
5284 static constexpr bool traverse{false};
5285 static constexpr auto mbr_ptr{&SgAsmExpression::p_comment};
5286 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5287 using bind = Desc<SgAsmExpression, std::string SgAsmExpression::*, &SgAsmExpression::p_comment>;
5288};
5298template <> struct node_from_variant_t<189> { using type = SgAsmExpression; };
5299
5300// Class: AsmSynthesizedFieldDeclaration
5301template <> struct describe_field_t<SgAsmSynthesizedFieldDeclaration,std::string,&SgAsmSynthesizedFieldDeclaration::p_name> {
5303 using field_type = std::string;
5304 static constexpr size_t position{0};
5305 static constexpr char const * const name{"name"};
5306 static constexpr char const * const typestr{"std::string"};
5307 static constexpr bool traverse{false};
5308 static constexpr auto mbr_ptr{&SgAsmSynthesizedFieldDeclaration::p_name};
5309 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5310 using bind = Desc<SgAsmSynthesizedFieldDeclaration, std::string SgAsmSynthesizedFieldDeclaration::*, &SgAsmSynthesizedFieldDeclaration::p_name>;
5311};
5312template <> struct describe_field_t<SgAsmSynthesizedFieldDeclaration,uint64_t,&SgAsmSynthesizedFieldDeclaration::p_offset> {
5314 using field_type = uint64_t;
5315 static constexpr size_t position{1};
5316 static constexpr char const * const name{"offset"};
5317 static constexpr char const * const typestr{"uint64_t"};
5318 static constexpr bool traverse{false};
5319 static constexpr auto mbr_ptr{&SgAsmSynthesizedFieldDeclaration::p_offset};
5320 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5321 using bind = Desc<SgAsmSynthesizedFieldDeclaration, uint64_t SgAsmSynthesizedFieldDeclaration::*, &SgAsmSynthesizedFieldDeclaration::p_offset>;
5322};
5326 static constexpr char const * const name{"AsmSynthesizedFieldDeclaration"};
5327 static constexpr unsigned long variant{190};
5328 static constexpr bool concrete{true};
5329 using subclasses_t = mp::List<>;
5331};
5332template <> struct node_from_variant_t<190> { using type = SgAsmSynthesizedFieldDeclaration; };
5333
5334// Class: AsmFloatType
5335template <> struct describe_field_t<SgAsmFloatType,size_t,&SgAsmFloatType::p_significandOffset> {
5336 using parent = SgAsmFloatType;
5337 using field_type = size_t;
5338 static constexpr size_t position{0};
5339 static constexpr char const * const name{"significandOffset"};
5340 static constexpr char const * const typestr{"size_t"};
5341 static constexpr bool traverse{false};
5342 static constexpr auto mbr_ptr{&SgAsmFloatType::p_significandOffset};
5343 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5344 using bind = Desc<SgAsmFloatType, size_t SgAsmFloatType::*, &SgAsmFloatType::p_significandOffset>;
5345};
5346template <> struct describe_field_t<SgAsmFloatType,size_t,&SgAsmFloatType::p_significandNBits> {
5347 using parent = SgAsmFloatType;
5348 using field_type = size_t;
5349 static constexpr size_t position{1};
5350 static constexpr char const * const name{"significandNBits"};
5351 static constexpr char const * const typestr{"size_t"};
5352 static constexpr bool traverse{false};
5353 static constexpr auto mbr_ptr{&SgAsmFloatType::p_significandNBits};
5354 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5355 using bind = Desc<SgAsmFloatType, size_t SgAsmFloatType::*, &SgAsmFloatType::p_significandNBits>;
5356};
5357template <> struct describe_field_t<SgAsmFloatType,size_t,&SgAsmFloatType::p_signBitOffset> {
5358 using parent = SgAsmFloatType;
5359 using field_type = size_t;
5360 static constexpr size_t position{2};
5361 static constexpr char const * const name{"signBitOffset"};
5362 static constexpr char const * const typestr{"size_t"};
5363 static constexpr bool traverse{false};
5364 static constexpr auto mbr_ptr{&SgAsmFloatType::p_signBitOffset};
5365 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5366 using bind = Desc<SgAsmFloatType, size_t SgAsmFloatType::*, &SgAsmFloatType::p_signBitOffset>;
5367};
5368template <> struct describe_field_t<SgAsmFloatType,size_t,&SgAsmFloatType::p_exponentOffset> {
5369 using parent = SgAsmFloatType;
5370 using field_type = size_t;
5371 static constexpr size_t position{3};
5372 static constexpr char const * const name{"exponentOffset"};
5373 static constexpr char const * const typestr{"size_t"};
5374 static constexpr bool traverse{false};
5375 static constexpr auto mbr_ptr{&SgAsmFloatType::p_exponentOffset};
5376 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5377 using bind = Desc<SgAsmFloatType, size_t SgAsmFloatType::*, &SgAsmFloatType::p_exponentOffset>;
5378};
5379template <> struct describe_field_t<SgAsmFloatType,size_t,&SgAsmFloatType::p_exponentNBits> {
5380 using parent = SgAsmFloatType;
5381 using field_type = size_t;
5382 static constexpr size_t position{4};
5383 static constexpr char const * const name{"exponentNBits"};
5384 static constexpr char const * const typestr{"size_t"};
5385 static constexpr bool traverse{false};
5386 static constexpr auto mbr_ptr{&SgAsmFloatType::p_exponentNBits};
5387 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5388 using bind = Desc<SgAsmFloatType, size_t SgAsmFloatType::*, &SgAsmFloatType::p_exponentNBits>;
5389};
5390template <> struct describe_field_t<SgAsmFloatType,uint64_t,&SgAsmFloatType::p_exponentBias> {
5391 using parent = SgAsmFloatType;
5392 using field_type = uint64_t;
5393 static constexpr size_t position{5};
5394 static constexpr char const * const name{"exponentBias"};
5395 static constexpr char const * const typestr{"uint64_t"};
5396 static constexpr bool traverse{false};
5397 static constexpr auto mbr_ptr{&SgAsmFloatType::p_exponentBias};
5398 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5399 using bind = Desc<SgAsmFloatType, uint64_t SgAsmFloatType::*, &SgAsmFloatType::p_exponentBias>;
5400};
5401template <> struct describe_field_t<SgAsmFloatType,unsigned,&SgAsmFloatType::p_flags> {
5402 using parent = SgAsmFloatType;
5403 using field_type = unsigned;
5404 static constexpr size_t position{6};
5405 static constexpr char const * const name{"flags"};
5406 static constexpr char const * const typestr{"unsigned"};
5407 static constexpr bool traverse{false};
5408 static constexpr auto mbr_ptr{&SgAsmFloatType::p_flags};
5409 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5410 using bind = Desc<SgAsmFloatType, unsigned SgAsmFloatType::*, &SgAsmFloatType::p_flags>;
5411};
5421template <> struct node_from_variant_t<191> { using type = SgAsmFloatType; };
5422
5423// Class: AsmFloatValueExpression
5427 static constexpr char const * const name{"AsmFloatValueExpression"};
5428 static constexpr unsigned long variant{192};
5429 static constexpr bool concrete{true};
5430 using subclasses_t = mp::List<>;
5431 using fields_t = mp::List<>;
5432};
5433template <> struct node_from_variant_t<192> { using type = SgAsmFloatValueExpression; };
5434
5435// Class: AsmFunction
5436template <> struct describe_field_t<SgAsmFunction,std::string,&SgAsmFunction::p_name> {
5437 using parent = SgAsmFunction;
5438 using field_type = std::string;
5439 static constexpr size_t position{0};
5440 static constexpr char const * const name{"name"};
5441 static constexpr char const * const typestr{"std::string"};
5442 static constexpr bool traverse{false};
5443 static constexpr auto mbr_ptr{&SgAsmFunction::p_name};
5444 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5445 using bind = Desc<SgAsmFunction, std::string SgAsmFunction::*, &SgAsmFunction::p_name>;
5446};
5447template <> struct describe_field_t<SgAsmFunction,unsigned,&SgAsmFunction::p_reason> {
5448 using parent = SgAsmFunction;
5449 using field_type = unsigned;
5450 static constexpr size_t position{1};
5451 static constexpr char const * const name{"reason"};
5452 static constexpr char const * const typestr{"unsigned"};
5453 static constexpr bool traverse{false};
5454 static constexpr auto mbr_ptr{&SgAsmFunction::p_reason};
5455 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5456 using bind = Desc<SgAsmFunction, unsigned SgAsmFunction::*, &SgAsmFunction::p_reason>;
5457};
5458template <> struct describe_field_t<SgAsmFunction,std::string,&SgAsmFunction::p_reasonComment> {
5459 using parent = SgAsmFunction;
5460 using field_type = std::string;
5461 static constexpr size_t position{2};
5462 static constexpr char const * const name{"reasonComment"};
5463 static constexpr char const * const typestr{"std::string"};
5464 static constexpr bool traverse{false};
5465 static constexpr auto mbr_ptr{&SgAsmFunction::p_reasonComment};
5466 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5467 using bind = Desc<SgAsmFunction, std::string SgAsmFunction::*, &SgAsmFunction::p_reasonComment>;
5468};
5469template <> struct describe_field_t<SgAsmFunction,SgAsmFunction::function_kind_enum,&SgAsmFunction::p_functionKind> {
5470 using parent = SgAsmFunction;
5472 static constexpr size_t position{3};
5473 static constexpr char const * const name{"functionKind"};
5474 static constexpr char const * const typestr{"SgAsmFunction::function_kind_enum"};
5475 static constexpr bool traverse{false};
5476 static constexpr auto mbr_ptr{&SgAsmFunction::p_functionKind};
5477 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5478 using bind = Desc<SgAsmFunction, SgAsmFunction::function_kind_enum SgAsmFunction::*, &SgAsmFunction::p_functionKind>;
5479};
5480template <> struct describe_field_t<SgAsmFunction,SgAsmFunction::MayReturn,&SgAsmFunction::p_mayReturn> {
5481 using parent = SgAsmFunction;
5483 static constexpr size_t position{4};
5484 static constexpr char const * const name{"mayReturn"};
5485 static constexpr char const * const typestr{"SgAsmFunction::MayReturn"};
5486 static constexpr bool traverse{false};
5487 static constexpr auto mbr_ptr{&SgAsmFunction::p_mayReturn};
5488 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5489 using bind = Desc<SgAsmFunction, SgAsmFunction::MayReturn SgAsmFunction::*, &SgAsmFunction::p_mayReturn>;
5490};
5491template <> struct describe_field_t<SgAsmFunction,std::string,&SgAsmFunction::p_nameMd5> {
5492 using parent = SgAsmFunction;
5493 using field_type = std::string;
5494 static constexpr size_t position{5};
5495 static constexpr char const * const name{"nameMd5"};
5496 static constexpr char const * const typestr{"std::string"};
5497 static constexpr bool traverse{false};
5498 static constexpr auto mbr_ptr{&SgAsmFunction::p_nameMd5};
5499 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5500 using bind = Desc<SgAsmFunction, std::string SgAsmFunction::*, &SgAsmFunction::p_nameMd5>;
5501};
5502template <> struct describe_field_t<SgAsmFunction,SgAsmStatementPtrList,&SgAsmFunction::p_statementList> {
5503 using parent = SgAsmFunction;
5504 using field_type = SgAsmStatementPtrList;
5505 static constexpr size_t position{6};
5506 static constexpr char const * const name{"statementList"};
5507 static constexpr char const * const typestr{"SgAsmStatementPtrList"};
5508 static constexpr bool traverse{true};
5509 static constexpr auto mbr_ptr{&SgAsmFunction::p_statementList};
5510 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5511 using bind = Desc<SgAsmFunction, SgAsmStatementPtrList SgAsmFunction::*, &SgAsmFunction::p_statementList>;
5512};
5513template <> struct describe_field_t<SgAsmFunction,SgAsmStatementPtrList,&SgAsmFunction::p_dest> {
5514 using parent = SgAsmFunction;
5515 using field_type = SgAsmStatementPtrList;
5516 static constexpr size_t position{7};
5517 static constexpr char const * const name{"dest"};
5518 static constexpr char const * const typestr{"SgAsmStatementPtrList"};
5519 static constexpr bool traverse{false};
5520 static constexpr auto mbr_ptr{&SgAsmFunction::p_dest};
5521 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5522 using bind = Desc<SgAsmFunction, SgAsmStatementPtrList SgAsmFunction::*, &SgAsmFunction::p_dest>;
5523};
5524template <> struct describe_field_t<SgAsmFunction,rose_addr_t,&SgAsmFunction::p_entryVa> {
5525 using parent = SgAsmFunction;
5526 using field_type = rose_addr_t;
5527 static constexpr size_t position{8};
5528 static constexpr char const * const name{"entryVa"};
5529 static constexpr char const * const typestr{"rose_addr_t"};
5530 static constexpr bool traverse{false};
5531 static constexpr auto mbr_ptr{&SgAsmFunction::p_entryVa};
5532 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5533 using bind = Desc<SgAsmFunction, rose_addr_t SgAsmFunction::*, &SgAsmFunction::p_entryVa>;
5534};
5535template <> struct describe_field_t<SgAsmFunction,SgSymbolTable*,&SgAsmFunction::p_symbolTable> {
5536 using parent = SgAsmFunction;
5537 using field_type = SgSymbolTable*;
5538 static constexpr size_t position{9};
5539 static constexpr char const * const name{"symbolTable"};
5540 static constexpr char const * const typestr{"SgSymbolTable*"};
5541 static constexpr bool traverse{false};
5542 static constexpr auto mbr_ptr{&SgAsmFunction::p_symbolTable};
5543 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5544 using bind = Desc<SgAsmFunction, SgSymbolTable* SgAsmFunction::*, &SgAsmFunction::p_symbolTable>;
5545};
5546template <> struct describe_field_t<SgAsmFunction,size_t,&SgAsmFunction::p_cachedVertex> {
5547 using parent = SgAsmFunction;
5548 using field_type = size_t;
5549 static constexpr size_t position{10};
5550 static constexpr char const * const name{"cachedVertex"};
5551 static constexpr char const * const typestr{"size_t"};
5552 static constexpr bool traverse{false};
5553 static constexpr auto mbr_ptr{&SgAsmFunction::p_cachedVertex};
5554 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5555 using bind = Desc<SgAsmFunction, size_t SgAsmFunction::*, &SgAsmFunction::p_cachedVertex>;
5556};
5557template <> struct describe_field_t<SgAsmFunction,int64_t,&SgAsmFunction::p_stackDelta> {
5558 using parent = SgAsmFunction;
5559 using field_type = int64_t;
5560 static constexpr size_t position{11};
5561 static constexpr char const * const name{"stackDelta"};
5562 static constexpr char const * const typestr{"int64_t"};
5563 static constexpr bool traverse{false};
5564 static constexpr auto mbr_ptr{&SgAsmFunction::p_stackDelta};
5565 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5566 using bind = Desc<SgAsmFunction, int64_t SgAsmFunction::*, &SgAsmFunction::p_stackDelta>;
5567};
5568template <> struct describe_field_t<SgAsmFunction,std::string,&SgAsmFunction::p_callingConvention> {
5569 using parent = SgAsmFunction;
5570 using field_type = std::string;
5571 static constexpr size_t position{12};
5572 static constexpr char const * const name{"callingConvention"};
5573 static constexpr char const * const typestr{"std::string"};
5574 static constexpr bool traverse{false};
5575 static constexpr auto mbr_ptr{&SgAsmFunction::p_callingConvention};
5576 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5577 using bind = Desc<SgAsmFunction, std::string SgAsmFunction::*, &SgAsmFunction::p_callingConvention>;
5578};
5588template <> struct node_from_variant_t<193> { using type = SgAsmFunction; };
5589
5590// Class: AsmGenericDLL
5591template <> struct describe_field_t<SgAsmGenericDLL,SgAsmGenericString*,&SgAsmGenericDLL::p_name> {
5592 using parent = SgAsmGenericDLL;
5594 static constexpr size_t position{0};
5595 static constexpr char const * const name{"name"};
5596 static constexpr char const * const typestr{"SgAsmGenericString*"};
5597 static constexpr bool traverse{true};
5598 static constexpr auto mbr_ptr{&SgAsmGenericDLL::p_name};
5599 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5600 using bind = Desc<SgAsmGenericDLL, SgAsmGenericString* SgAsmGenericDLL::*, &SgAsmGenericDLL::p_name>;
5601};
5602template <> struct describe_field_t<SgAsmGenericDLL,SgStringList,&SgAsmGenericDLL::p_symbols> {
5603 using parent = SgAsmGenericDLL;
5604 using field_type = SgStringList;
5605 static constexpr size_t position{1};
5606 static constexpr char const * const name{"symbols"};
5607 static constexpr char const * const typestr{"SgStringList"};
5608 static constexpr bool traverse{false};
5609 static constexpr auto mbr_ptr{&SgAsmGenericDLL::p_symbols};
5610 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5611 using bind = Desc<SgAsmGenericDLL, SgStringList SgAsmGenericDLL::*, &SgAsmGenericDLL::p_symbols>;
5612};
5614 using node = SgAsmGenericDLL;
5616 static constexpr char const * const name{"AsmGenericDLL"};
5617 static constexpr unsigned long variant{194};
5618 static constexpr bool concrete{true};
5619 using subclasses_t = mp::List<>;
5621};
5622template <> struct node_from_variant_t<194> { using type = SgAsmGenericDLL; };
5623
5624// Class: AsmGenericDLLList
5625template <> struct describe_field_t<SgAsmGenericDLLList,SgAsmGenericDLLPtrList,&SgAsmGenericDLLList::p_dlls> {
5627 using field_type = SgAsmGenericDLLPtrList;
5628 static constexpr size_t position{0};
5629 static constexpr char const * const name{"dlls"};
5630 static constexpr char const * const typestr{"SgAsmGenericDLLPtrList"};
5631 static constexpr bool traverse{false};
5632 static constexpr auto mbr_ptr{&SgAsmGenericDLLList::p_dlls};
5633 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5634 using bind = Desc<SgAsmGenericDLLList, SgAsmGenericDLLPtrList SgAsmGenericDLLList::*, &SgAsmGenericDLLList::p_dlls>;
5635};
5637 using node = SgAsmGenericDLLList;
5639 static constexpr char const * const name{"AsmGenericDLLList"};
5640 static constexpr unsigned long variant{195};
5641 static constexpr bool concrete{true};
5642 using subclasses_t = mp::List<>;
5644};
5645template <> struct node_from_variant_t<195> { using type = SgAsmGenericDLLList; };
5646
5647// Class: AsmGenericFile
5648template <> struct describe_field_t<SgAsmGenericFile,SgAsmDwarfCompilationUnitList*,&SgAsmGenericFile::p_dwarfInfo> {
5649 using parent = SgAsmGenericFile;
5651 static constexpr size_t position{0};
5652 static constexpr char const * const name{"dwarfInfo"};
5653 static constexpr char const * const typestr{"SgAsmDwarfCompilationUnitList*"};
5654 static constexpr bool traverse{true};
5655 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_dwarfInfo};
5656 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5657 using bind = Desc<SgAsmGenericFile, SgAsmDwarfCompilationUnitList* SgAsmGenericFile::*, &SgAsmGenericFile::p_dwarfInfo>;
5658};
5659template <> struct describe_field_t<SgAsmGenericFile,std::string,&SgAsmGenericFile::p_name> {
5660 using parent = SgAsmGenericFile;
5661 using field_type = std::string;
5662 static constexpr size_t position{1};
5663 static constexpr char const * const name{"name"};
5664 static constexpr char const * const typestr{"std::string"};
5665 static constexpr bool traverse{false};
5666 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_name};
5667 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5668 using bind = Desc<SgAsmGenericFile, std::string SgAsmGenericFile::*, &SgAsmGenericFile::p_name>;
5669};
5670template <> struct describe_field_t<SgAsmGenericFile,int,&SgAsmGenericFile::p_fd> {
5671 using parent = SgAsmGenericFile;
5672 using field_type = int;
5673 static constexpr size_t position{2};
5674 static constexpr char const * const name{"fd"};
5675 static constexpr char const * const typestr{"int"};
5676 static constexpr bool traverse{false};
5677 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_fd};
5678 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5679 using bind = Desc<SgAsmGenericFile, int SgAsmGenericFile::*, &SgAsmGenericFile::p_fd>;
5680};
5681template <> struct describe_field_t<SgAsmGenericFile,struct stat,&SgAsmGenericFile::p_sb> {
5682 using parent = SgAsmGenericFile;
5683 using field_type = struct stat;
5684 static constexpr size_t position{3};
5685 static constexpr char const * const name{"sb"};
5686 static constexpr char const * const typestr{"struct stat"};
5687 static constexpr bool traverse{false};
5688 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_sb};
5689 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5690 using bind = Desc<SgAsmGenericFile, struct stat SgAsmGenericFile::*, &SgAsmGenericFile::p_sb>;
5691};
5692template <> struct describe_field_t<SgAsmGenericFile,SgFileContentList,&SgAsmGenericFile::p_data> {
5693 using parent = SgAsmGenericFile;
5695 static constexpr size_t position{4};
5696 static constexpr char const * const name{"data"};
5697 static constexpr char const * const typestr{"SgFileContentList"};
5698 static constexpr bool traverse{false};
5699 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_data};
5700 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5701 using bind = Desc<SgAsmGenericFile, SgFileContentList SgAsmGenericFile::*, &SgAsmGenericFile::p_data>;
5702};
5703template <> struct describe_field_t<SgAsmGenericFile,SgAsmGenericHeaderList*,&SgAsmGenericFile::p_headers> {
5704 using parent = SgAsmGenericFile;
5706 static constexpr size_t position{5};
5707 static constexpr char const * const name{"headers"};
5708 static constexpr char const * const typestr{"SgAsmGenericHeaderList*"};
5709 static constexpr bool traverse{true};
5710 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_headers};
5711 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5712 using bind = Desc<SgAsmGenericFile, SgAsmGenericHeaderList* SgAsmGenericFile::*, &SgAsmGenericFile::p_headers>;
5713};
5714template <> struct describe_field_t<SgAsmGenericFile,SgAsmGenericSectionList*,&SgAsmGenericFile::p_holes> {
5715 using parent = SgAsmGenericFile;
5717 static constexpr size_t position{6};
5718 static constexpr char const * const name{"holes"};
5719 static constexpr char const * const typestr{"SgAsmGenericSectionList*"};
5720 static constexpr bool traverse{true};
5721 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_holes};
5722 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5723 using bind = Desc<SgAsmGenericFile, SgAsmGenericSectionList* SgAsmGenericFile::*, &SgAsmGenericFile::p_holes>;
5724};
5725template <> struct describe_field_t<SgAsmGenericFile,bool,&SgAsmGenericFile::p_truncateZeros> {
5726 using parent = SgAsmGenericFile;
5727 using field_type = bool;
5728 static constexpr size_t position{7};
5729 static constexpr char const * const name{"truncateZeros"};
5730 static constexpr char const * const typestr{"bool"};
5731 static constexpr bool traverse{false};
5732 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_truncateZeros};
5733 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5734 using bind = Desc<SgAsmGenericFile, bool SgAsmGenericFile::*, &SgAsmGenericFile::p_truncateZeros>;
5735};
5736template <> struct describe_field_t<SgAsmGenericFile,bool,&SgAsmGenericFile::p_trackingReferences> {
5737 using parent = SgAsmGenericFile;
5738 using field_type = bool;
5739 static constexpr size_t position{8};
5740 static constexpr char const * const name{"trackingReferences"};
5741 static constexpr char const * const typestr{"bool"};
5742 static constexpr bool traverse{false};
5743 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_trackingReferences};
5744 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5745 using bind = Desc<SgAsmGenericFile, bool SgAsmGenericFile::*, &SgAsmGenericFile::p_trackingReferences>;
5746};
5747template <> struct describe_field_t<SgAsmGenericFile,Rose::BinaryAnalysis::AddressIntervalSet,&SgAsmGenericFile::p_referencedExtents> {
5748 using parent = SgAsmGenericFile;
5750 static constexpr size_t position{9};
5751 static constexpr char const * const name{"referencedExtents"};
5752 static constexpr char const * const typestr{"Rose::BinaryAnalysis::AddressIntervalSet"};
5753 static constexpr bool traverse{false};
5754 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_referencedExtents};
5755 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5756 using bind = Desc<SgAsmGenericFile, Rose::BinaryAnalysis::AddressIntervalSet SgAsmGenericFile::*, &SgAsmGenericFile::p_referencedExtents>;
5757};
5758template <> struct describe_field_t<SgAsmGenericFile,bool,&SgAsmGenericFile::p_neuter> {
5759 using parent = SgAsmGenericFile;
5760 using field_type = bool;
5761 static constexpr size_t position{10};
5762 static constexpr char const * const name{"neuter"};
5763 static constexpr char const * const typestr{"bool"};
5764 static constexpr bool traverse{false};
5765 static constexpr auto mbr_ptr{&SgAsmGenericFile::p_neuter};
5766 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5767 using bind = Desc<SgAsmGenericFile, bool SgAsmGenericFile::*, &SgAsmGenericFile::p_neuter>;
5768};
5778template <> struct node_from_variant_t<196> { using type = SgAsmGenericFile; };
5779
5780// Class: AsmGenericFileList
5781template <> struct describe_field_t<SgAsmGenericFileList,SgAsmGenericFilePtrList,&SgAsmGenericFileList::p_files> {
5783 using field_type = SgAsmGenericFilePtrList;
5784 static constexpr size_t position{0};
5785 static constexpr char const * const name{"files"};
5786 static constexpr char const * const typestr{"SgAsmGenericFilePtrList"};
5787 static constexpr bool traverse{true};
5788 static constexpr auto mbr_ptr{&SgAsmGenericFileList::p_files};
5789 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5790 using bind = Desc<SgAsmGenericFileList, SgAsmGenericFilePtrList SgAsmGenericFileList::*, &SgAsmGenericFileList::p_files>;
5791};
5793 using node = SgAsmGenericFileList;
5794 using base = SgAsmNode;
5795 static constexpr char const * const name{"AsmGenericFileList"};
5796 static constexpr unsigned long variant{197};
5797 static constexpr bool concrete{true};
5798 using subclasses_t = mp::List<>;
5800};
5801template <> struct node_from_variant_t<197> { using type = SgAsmGenericFileList; };
5802
5803// Class: AsmGenericFormat
5804template <> struct describe_field_t<SgAsmGenericFormat,SgAsmGenericFormat::ExecFamily,&SgAsmGenericFormat::p_family> {
5805 using parent = SgAsmGenericFormat;
5807 static constexpr size_t position{0};
5808 static constexpr char const * const name{"family"};
5809 static constexpr char const * const typestr{"SgAsmGenericFormat::ExecFamily"};
5810 static constexpr bool traverse{false};
5811 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_family};
5812 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5813 using bind = Desc<SgAsmGenericFormat, SgAsmGenericFormat::ExecFamily SgAsmGenericFormat::*, &SgAsmGenericFormat::p_family>;
5814};
5815template <> struct describe_field_t<SgAsmGenericFormat,SgAsmGenericFormat::ExecPurpose,&SgAsmGenericFormat::p_purpose> {
5816 using parent = SgAsmGenericFormat;
5818 static constexpr size_t position{1};
5819 static constexpr char const * const name{"purpose"};
5820 static constexpr char const * const typestr{"SgAsmGenericFormat::ExecPurpose"};
5821 static constexpr bool traverse{false};
5822 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_purpose};
5823 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5824 using bind = Desc<SgAsmGenericFormat, SgAsmGenericFormat::ExecPurpose SgAsmGenericFormat::*, &SgAsmGenericFormat::p_purpose>;
5825};
5827 using parent = SgAsmGenericFormat;
5829 static constexpr size_t position{2};
5830 static constexpr char const * const name{"sex"};
5831 static constexpr char const * const typestr{"Rose::BinaryAnalysis::ByteOrder::Endianness"};
5832 static constexpr bool traverse{false};
5833 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_sex};
5834 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5835 using bind = Desc<SgAsmGenericFormat, Rose::BinaryAnalysis::ByteOrder::Endianness SgAsmGenericFormat::*, &SgAsmGenericFormat::p_sex>;
5836};
5837template <> struct describe_field_t<SgAsmGenericFormat,unsigned,&SgAsmGenericFormat::p_version> {
5838 using parent = SgAsmGenericFormat;
5839 using field_type = unsigned;
5840 static constexpr size_t position{3};
5841 static constexpr char const * const name{"version"};
5842 static constexpr char const * const typestr{"unsigned"};
5843 static constexpr bool traverse{false};
5844 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_version};
5845 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5846 using bind = Desc<SgAsmGenericFormat, unsigned SgAsmGenericFormat::*, &SgAsmGenericFormat::p_version>;
5847};
5848template <> struct describe_field_t<SgAsmGenericFormat,bool,&SgAsmGenericFormat::p_isCurrentVersion> {
5849 using parent = SgAsmGenericFormat;
5850 using field_type = bool;
5851 static constexpr size_t position{4};
5852 static constexpr char const * const name{"isCurrentVersion"};
5853 static constexpr char const * const typestr{"bool"};
5854 static constexpr bool traverse{false};
5855 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_isCurrentVersion};
5856 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5857 using bind = Desc<SgAsmGenericFormat, bool SgAsmGenericFormat::*, &SgAsmGenericFormat::p_isCurrentVersion>;
5858};
5859template <> struct describe_field_t<SgAsmGenericFormat,SgAsmGenericFormat::ExecABI,&SgAsmGenericFormat::p_abi> {
5860 using parent = SgAsmGenericFormat;
5862 static constexpr size_t position{5};
5863 static constexpr char const * const name{"abi"};
5864 static constexpr char const * const typestr{"SgAsmGenericFormat::ExecABI"};
5865 static constexpr bool traverse{false};
5866 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_abi};
5867 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5868 using bind = Desc<SgAsmGenericFormat, SgAsmGenericFormat::ExecABI SgAsmGenericFormat::*, &SgAsmGenericFormat::p_abi>;
5869};
5870template <> struct describe_field_t<SgAsmGenericFormat,unsigned,&SgAsmGenericFormat::p_abiVersion> {
5871 using parent = SgAsmGenericFormat;
5872 using field_type = unsigned;
5873 static constexpr size_t position{6};
5874 static constexpr char const * const name{"abiVersion"};
5875 static constexpr char const * const typestr{"unsigned"};
5876 static constexpr bool traverse{false};
5877 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_abiVersion};
5878 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5879 using bind = Desc<SgAsmGenericFormat, unsigned SgAsmGenericFormat::*, &SgAsmGenericFormat::p_abiVersion>;
5880};
5881template <> struct describe_field_t<SgAsmGenericFormat,size_t,&SgAsmGenericFormat::p_wordSize> {
5882 using parent = SgAsmGenericFormat;
5883 using field_type = size_t;
5884 static constexpr size_t position{7};
5885 static constexpr char const * const name{"wordSize"};
5886 static constexpr char const * const typestr{"size_t"};
5887 static constexpr bool traverse{false};
5888 static constexpr auto mbr_ptr{&SgAsmGenericFormat::p_wordSize};
5889 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5890 using bind = Desc<SgAsmGenericFormat, size_t SgAsmGenericFormat::*, &SgAsmGenericFormat::p_wordSize>;
5891};
5901template <> struct node_from_variant_t<198> { using type = SgAsmGenericFormat; };
5902
5903// Class: AsmGenericHeader
5904template <> struct describe_field_t<SgAsmGenericHeader,SgAsmGenericFormat*,&SgAsmGenericHeader::p_executableFormat> {
5905 using parent = SgAsmGenericHeader;
5907 static constexpr size_t position{0};
5908 static constexpr char const * const name{"executableFormat"};
5909 static constexpr char const * const typestr{"SgAsmGenericFormat*"};
5910 static constexpr bool traverse{true};
5911 static constexpr auto mbr_ptr{&SgAsmGenericHeader::p_executableFormat};
5912 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5913 using bind = Desc<SgAsmGenericHeader, SgAsmGenericFormat* SgAsmGenericHeader::*, &SgAsmGenericHeader::p_executableFormat>;
5914};
5915template <> struct describe_field_t<SgAsmGenericHeader,SgCharList,&SgAsmGenericHeader::p_magic> {
5916 using parent = SgAsmGenericHeader;
5917 using field_type = SgCharList;
5918 static constexpr size_t position{1};
5919 static constexpr char const * const name{"magic"};
5920 static constexpr char const * const typestr{"SgCharList"};
5921 static constexpr bool traverse{false};
5922 static constexpr auto mbr_ptr{&SgAsmGenericHeader::p_magic};
5923 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5924 using bind = Desc<SgAsmGenericHeader, SgCharList SgAsmGenericHeader::*, &SgAsmGenericHeader::p_magic>;
5925};
5926template <> struct describe_field_t<SgAsmGenericHeader,SgAsmGenericFormat::InsSetArchitecture,&SgAsmGenericHeader::p_isa> {
5927 using parent = SgAsmGenericHeader;
5929 static constexpr size_t position{2};
5930 static constexpr char const * const name{"isa"};
5931 static constexpr char const * const typestr{"SgAsmGenericFormat::InsSetArchitecture"};
5932 static constexpr bool traverse{false};
5933 static constexpr auto mbr_ptr{&SgAsmGenericHeader::p_isa};
5934 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5935 using bind = Desc<SgAsmGenericHeader, SgAsmGenericFormat::InsSetArchitecture SgAsmGenericHeader::*, &SgAsmGenericHeader::p_isa>;
5936};
5937template <> struct describe_field_t<SgAsmGenericHeader,rose_addr_t,&SgAsmGenericHeader::p_baseVa> {
5938 using parent = SgAsmGenericHeader;
5939 using field_type = rose_addr_t;
5940 static constexpr size_t position{3};
5941 static constexpr char const * const name{"baseVa"};
5942 static constexpr char const * const typestr{"rose_addr_t"};
5943 static constexpr bool traverse{false};
5944 static constexpr auto mbr_ptr{&SgAsmGenericHeader::p_baseVa};
5945 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5946 using bind = Desc<SgAsmGenericHeader, rose_addr_t SgAsmGenericHeader::*, &SgAsmGenericHeader::p_baseVa>;
5947};
5948template <> struct describe_field_t<SgAsmGenericHeader,SgRVAList,&SgAsmGenericHeader::p_entryRvas> {
5949 using parent = SgAsmGenericHeader;
5950 using field_type = SgRVAList;
5951 static constexpr size_t position{4};
5952 static constexpr char const * const name{"entryRvas"};
5953 static constexpr char const * const typestr{"SgRVAList"};
5954 static constexpr bool traverse{false};
5955 static constexpr auto mbr_ptr{&SgAsmGenericHeader::p_entryRvas};
5956 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5957 using bind = Desc<SgAsmGenericHeader, SgRVAList SgAsmGenericHeader::*, &SgAsmGenericHeader::p_entryRvas>;
5958};
5959template <> struct describe_field_t<SgAsmGenericHeader,SgAsmGenericDLLList*,&SgAsmGenericHeader::p_dlls> {
5960 using parent = SgAsmGenericHeader;
5962 static constexpr size_t position{5};
5963 static constexpr char const * const name{"dlls"};
5964 static constexpr char const * const typestr{"SgAsmGenericDLLList*"};
5965 static constexpr bool traverse{true};
5966 static constexpr auto mbr_ptr{&SgAsmGenericHeader::p_dlls};
5967 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5968 using bind = Desc<SgAsmGenericHeader, SgAsmGenericDLLList* SgAsmGenericHeader::*, &SgAsmGenericHeader::p_dlls>;
5969};
5970template <> struct describe_field_t<SgAsmGenericHeader,SgAsmGenericSectionList*,&SgAsmGenericHeader::p_sections> {
5971 using parent = SgAsmGenericHeader;
5973 static constexpr size_t position{6};
5974 static constexpr char const * const name{"sections"};
5975 static constexpr char const * const typestr{"SgAsmGenericSectionList*"};
5976 static constexpr bool traverse{true};
5977 static constexpr auto mbr_ptr{&SgAsmGenericHeader::p_sections};
5978 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
5979 using bind = Desc<SgAsmGenericHeader, SgAsmGenericSectionList* SgAsmGenericHeader::*, &SgAsmGenericHeader::p_sections>;
5980};
5990template <> struct node_from_variant_t<199> { using type = SgAsmGenericHeader; };
5991
5992// Class: AsmGenericHeaderList
5993template <> struct describe_field_t<SgAsmGenericHeaderList,SgAsmGenericHeaderPtrList,&SgAsmGenericHeaderList::p_headers> {
5995 using field_type = SgAsmGenericHeaderPtrList;
5996 static constexpr size_t position{0};
5997 static constexpr char const * const name{"headers"};
5998 static constexpr char const * const typestr{"SgAsmGenericHeaderPtrList"};
5999 static constexpr bool traverse{true};
6000 static constexpr auto mbr_ptr{&SgAsmGenericHeaderList::p_headers};
6001 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6002 using bind = Desc<SgAsmGenericHeaderList, SgAsmGenericHeaderPtrList SgAsmGenericHeaderList::*, &SgAsmGenericHeaderList::p_headers>;
6003};
6007 static constexpr char const * const name{"AsmGenericHeaderList"};
6008 static constexpr unsigned long variant{200};
6009 static constexpr bool concrete{true};
6010 using subclasses_t = mp::List<>;
6012};
6013template <> struct node_from_variant_t<200> { using type = SgAsmGenericHeaderList; };
6014
6015// Class: AsmGenericSection
6016template <> struct describe_field_t<SgAsmGenericSection,SgAsmGenericFile*,&SgAsmGenericSection::p_file> {
6019 static constexpr size_t position{0};
6020 static constexpr char const * const name{"file"};
6021 static constexpr char const * const typestr{"SgAsmGenericFile*"};
6022 static constexpr bool traverse{false};
6023 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_file};
6024 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6025 using bind = Desc<SgAsmGenericSection, SgAsmGenericFile* SgAsmGenericSection::*, &SgAsmGenericSection::p_file>;
6026};
6027template <> struct describe_field_t<SgAsmGenericSection,SgAsmGenericHeader*,&SgAsmGenericSection::p_header> {
6030 static constexpr size_t position{1};
6031 static constexpr char const * const name{"header"};
6032 static constexpr char const * const typestr{"SgAsmGenericHeader*"};
6033 static constexpr bool traverse{false};
6034 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_header};
6035 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6036 using bind = Desc<SgAsmGenericSection, SgAsmGenericHeader* SgAsmGenericSection::*, &SgAsmGenericSection::p_header>;
6037};
6038template <> struct describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_size> {
6040 using field_type = rose_addr_t;
6041 static constexpr size_t position{2};
6042 static constexpr char const * const name{"size"};
6043 static constexpr char const * const typestr{"rose_addr_t"};
6044 static constexpr bool traverse{false};
6045 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_size};
6046 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6047 using bind = Desc<SgAsmGenericSection, rose_addr_t SgAsmGenericSection::*, &SgAsmGenericSection::p_size>;
6048};
6049template <> struct describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_offset> {
6051 using field_type = rose_addr_t;
6052 static constexpr size_t position{3};
6053 static constexpr char const * const name{"offset"};
6054 static constexpr char const * const typestr{"rose_addr_t"};
6055 static constexpr bool traverse{false};
6056 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_offset};
6057 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6058 using bind = Desc<SgAsmGenericSection, rose_addr_t SgAsmGenericSection::*, &SgAsmGenericSection::p_offset>;
6059};
6060template <> struct describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_fileAlignment> {
6062 using field_type = rose_addr_t;
6063 static constexpr size_t position{4};
6064 static constexpr char const * const name{"fileAlignment"};
6065 static constexpr char const * const typestr{"rose_addr_t"};
6066 static constexpr bool traverse{false};
6067 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_fileAlignment};
6068 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6069 using bind = Desc<SgAsmGenericSection, rose_addr_t SgAsmGenericSection::*, &SgAsmGenericSection::p_fileAlignment>;
6070};
6071template <> struct describe_field_t<SgAsmGenericSection,SgFileContentList,&SgAsmGenericSection::p_data> {
6074 static constexpr size_t position{5};
6075 static constexpr char const * const name{"data"};
6076 static constexpr char const * const typestr{"SgFileContentList"};
6077 static constexpr bool traverse{false};
6078 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_data};
6079 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6080 using bind = Desc<SgAsmGenericSection, SgFileContentList SgAsmGenericSection::*, &SgAsmGenericSection::p_data>;
6081};
6082template <> struct describe_field_t<SgAsmGenericSection,SgAsmGenericSection::SectionPurpose,&SgAsmGenericSection::p_purpose> {
6085 static constexpr size_t position{6};
6086 static constexpr char const * const name{"purpose"};
6087 static constexpr char const * const typestr{"SgAsmGenericSection::SectionPurpose"};
6088 static constexpr bool traverse{false};
6089 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_purpose};
6090 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6091 using bind = Desc<SgAsmGenericSection, SgAsmGenericSection::SectionPurpose SgAsmGenericSection::*, &SgAsmGenericSection::p_purpose>;
6092};
6093template <> struct describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_synthesized> {
6095 using field_type = bool;
6096 static constexpr size_t position{7};
6097 static constexpr char const * const name{"synthesized"};
6098 static constexpr char const * const typestr{"bool"};
6099 static constexpr bool traverse{false};
6100 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_synthesized};
6101 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6102 using bind = Desc<SgAsmGenericSection, bool SgAsmGenericSection::*, &SgAsmGenericSection::p_synthesized>;
6103};
6104template <> struct describe_field_t<SgAsmGenericSection,int,&SgAsmGenericSection::p_id> {
6106 using field_type = int;
6107 static constexpr size_t position{8};
6108 static constexpr char const * const name{"id"};
6109 static constexpr char const * const typestr{"int"};
6110 static constexpr bool traverse{false};
6111 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_id};
6112 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6113 using bind = Desc<SgAsmGenericSection, int SgAsmGenericSection::*, &SgAsmGenericSection::p_id>;
6114};
6115template <> struct describe_field_t<SgAsmGenericSection,SgAsmGenericString*,&SgAsmGenericSection::p_name> {
6118 static constexpr size_t position{9};
6119 static constexpr char const * const name{"name"};
6120 static constexpr char const * const typestr{"SgAsmGenericString*"};
6121 static constexpr bool traverse{false};
6122 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_name};
6123 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6124 using bind = Desc<SgAsmGenericSection, SgAsmGenericString* SgAsmGenericSection::*, &SgAsmGenericSection::p_name>;
6125};
6126template <> struct describe_field_t<SgAsmGenericSection,std::string,&SgAsmGenericSection::p_shortName> {
6128 using field_type = std::string;
6129 static constexpr size_t position{10};
6130 static constexpr char const * const name{"shortName"};
6131 static constexpr char const * const typestr{"std::string"};
6132 static constexpr bool traverse{false};
6133 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_shortName};
6134 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6135 using bind = Desc<SgAsmGenericSection, std::string SgAsmGenericSection::*, &SgAsmGenericSection::p_shortName>;
6136};
6137template <> struct describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedPreferredRva> {
6139 using field_type = rose_addr_t;
6140 static constexpr size_t position{11};
6141 static constexpr char const * const name{"mappedPreferredRva"};
6142 static constexpr char const * const typestr{"rose_addr_t"};
6143 static constexpr bool traverse{false};
6144 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_mappedPreferredRva};
6145 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6146 using bind = Desc<SgAsmGenericSection, rose_addr_t SgAsmGenericSection::*, &SgAsmGenericSection::p_mappedPreferredRva>;
6147};
6148template <> struct describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedSize> {
6150 using field_type = rose_addr_t;
6151 static constexpr size_t position{12};
6152 static constexpr char const * const name{"mappedSize"};
6153 static constexpr char const * const typestr{"rose_addr_t"};
6154 static constexpr bool traverse{false};
6155 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_mappedSize};
6156 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6157 using bind = Desc<SgAsmGenericSection, rose_addr_t SgAsmGenericSection::*, &SgAsmGenericSection::p_mappedSize>;
6158};
6159template <> struct describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedAlignment> {
6161 using field_type = rose_addr_t;
6162 static constexpr size_t position{13};
6163 static constexpr char const * const name{"mappedAlignment"};
6164 static constexpr char const * const typestr{"rose_addr_t"};
6165 static constexpr bool traverse{false};
6166 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_mappedAlignment};
6167 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6168 using bind = Desc<SgAsmGenericSection, rose_addr_t SgAsmGenericSection::*, &SgAsmGenericSection::p_mappedAlignment>;
6169};
6170template <> struct describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_mappedReadPermission> {
6172 using field_type = bool;
6173 static constexpr size_t position{14};
6174 static constexpr char const * const name{"mappedReadPermission"};
6175 static constexpr char const * const typestr{"bool"};
6176 static constexpr bool traverse{false};
6177 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_mappedReadPermission};
6178 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6179 using bind = Desc<SgAsmGenericSection, bool SgAsmGenericSection::*, &SgAsmGenericSection::p_mappedReadPermission>;
6180};
6181template <> struct describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_mappedWritePermission> {
6183 using field_type = bool;
6184 static constexpr size_t position{15};
6185 static constexpr char const * const name{"mappedWritePermission"};
6186 static constexpr char const * const typestr{"bool"};
6187 static constexpr bool traverse{false};
6188 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_mappedWritePermission};
6189 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6190 using bind = Desc<SgAsmGenericSection, bool SgAsmGenericSection::*, &SgAsmGenericSection::p_mappedWritePermission>;
6191};
6192template <> struct describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_mappedExecutePermission> {
6194 using field_type = bool;
6195 static constexpr size_t position{16};
6196 static constexpr char const * const name{"mappedExecutePermission"};
6197 static constexpr char const * const typestr{"bool"};
6198 static constexpr bool traverse{false};
6199 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_mappedExecutePermission};
6200 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6201 using bind = Desc<SgAsmGenericSection, bool SgAsmGenericSection::*, &SgAsmGenericSection::p_mappedExecutePermission>;
6202};
6203template <> struct describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_containsCode> {
6205 using field_type = bool;
6206 static constexpr size_t position{17};
6207 static constexpr char const * const name{"containsCode"};
6208 static constexpr char const * const typestr{"bool"};
6209 static constexpr bool traverse{false};
6210 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_containsCode};
6211 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6212 using bind = Desc<SgAsmGenericSection, bool SgAsmGenericSection::*, &SgAsmGenericSection::p_containsCode>;
6213};
6214template <> struct describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedActualVa> {
6216 using field_type = rose_addr_t;
6217 static constexpr size_t position{18};
6218 static constexpr char const * const name{"mappedActualVa"};
6219 static constexpr char const * const typestr{"rose_addr_t"};
6220 static constexpr bool traverse{false};
6221 static constexpr auto mbr_ptr{&SgAsmGenericSection::p_mappedActualVa};
6222 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6223 using bind = Desc<SgAsmGenericSection, rose_addr_t SgAsmGenericSection::*, &SgAsmGenericSection::p_mappedActualVa>;
6224};
6226 using node = SgAsmGenericSection;
6228 static constexpr char const * const name{"AsmGenericSection"};
6229 static constexpr unsigned long variant{201};
6230 static constexpr bool concrete{true};
6232 using fields_t = mp::List<describe_field_t<SgAsmGenericSection,SgAsmGenericFile*,&SgAsmGenericSection::p_file>, describe_field_t<SgAsmGenericSection,SgAsmGenericHeader*,&SgAsmGenericSection::p_header>, describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_size>, describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_offset>, describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_fileAlignment>, describe_field_t<SgAsmGenericSection,SgFileContentList,&SgAsmGenericSection::p_data>, describe_field_t<SgAsmGenericSection,SgAsmGenericSection::SectionPurpose,&SgAsmGenericSection::p_purpose>, describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_synthesized>, describe_field_t<SgAsmGenericSection,int,&SgAsmGenericSection::p_id>, describe_field_t<SgAsmGenericSection,SgAsmGenericString*,&SgAsmGenericSection::p_name>, describe_field_t<SgAsmGenericSection,std::string,&SgAsmGenericSection::p_shortName>, describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedPreferredRva>, describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedSize>, describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedAlignment>, describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_mappedReadPermission>, describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_mappedWritePermission>, describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_mappedExecutePermission>, describe_field_t<SgAsmGenericSection,bool,&SgAsmGenericSection::p_containsCode>, describe_field_t<SgAsmGenericSection,rose_addr_t,&SgAsmGenericSection::p_mappedActualVa>>;
6233};
6234template <> struct node_from_variant_t<201> { using type = SgAsmGenericSection; };
6235
6236// Class: AsmGenericSectionList
6237template <> struct describe_field_t<SgAsmGenericSectionList,SgAsmGenericSectionPtrList,&SgAsmGenericSectionList::p_sections> {
6239 using field_type = SgAsmGenericSectionPtrList;
6240 static constexpr size_t position{0};
6241 static constexpr char const * const name{"sections"};
6242 static constexpr char const * const typestr{"SgAsmGenericSectionPtrList"};
6243 static constexpr bool traverse{true};
6244 static constexpr auto mbr_ptr{&SgAsmGenericSectionList::p_sections};
6245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6246 using bind = Desc<SgAsmGenericSectionList, SgAsmGenericSectionPtrList SgAsmGenericSectionList::*, &SgAsmGenericSectionList::p_sections>;
6247};
6251 static constexpr char const * const name{"AsmGenericSectionList"};
6252 static constexpr unsigned long variant{202};
6253 static constexpr bool concrete{true};
6254 using subclasses_t = mp::List<>;
6256};
6257template <> struct node_from_variant_t<202> { using type = SgAsmGenericSectionList; };
6258
6259// Class: AsmGenericString
6261 using node = SgAsmGenericString;
6263 static constexpr char const * const name{"AsmGenericString"};
6264 static constexpr unsigned long variant{203};
6265 static constexpr bool concrete{false};
6267 using fields_t = mp::List<>;
6268};
6269template <> struct node_from_variant_t<203> { using type = SgAsmGenericString; };
6270
6271// Class: AsmGenericStrtab
6272template <> struct describe_field_t<SgAsmGenericStrtab,SgAsmGenericSection*,&SgAsmGenericStrtab::p_container> {
6273 using parent = SgAsmGenericStrtab;
6275 static constexpr size_t position{0};
6276 static constexpr char const * const name{"container"};
6277 static constexpr char const * const typestr{"SgAsmGenericSection*"};
6278 static constexpr bool traverse{false};
6279 static constexpr auto mbr_ptr{&SgAsmGenericStrtab::p_container};
6280 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6281 using bind = Desc<SgAsmGenericStrtab, SgAsmGenericSection* SgAsmGenericStrtab::*, &SgAsmGenericStrtab::p_container>;
6282};
6283template <> struct describe_field_t<SgAsmGenericStrtab,SgAsmGenericStrtab::referenced_t,&SgAsmGenericStrtab::p_storageList> {
6284 using parent = SgAsmGenericStrtab;
6285 using field_type = SgAsmGenericStrtab::referenced_t;
6286 static constexpr size_t position{1};
6287 static constexpr char const * const name{"storageList"};
6288 static constexpr char const * const typestr{"SgAsmGenericStrtab::referenced_t"};
6289 static constexpr bool traverse{false};
6290 static constexpr auto mbr_ptr{&SgAsmGenericStrtab::p_storageList};
6291 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6292 using bind = Desc<SgAsmGenericStrtab, SgAsmGenericStrtab::referenced_t SgAsmGenericStrtab::*, &SgAsmGenericStrtab::p_storageList>;
6293};
6294template <> struct describe_field_t<SgAsmGenericStrtab,Rose::BinaryAnalysis::AddressIntervalSet,&SgAsmGenericStrtab::p_freeList> {
6295 using parent = SgAsmGenericStrtab;
6297 static constexpr size_t position{2};
6298 static constexpr char const * const name{"freeList"};
6299 static constexpr char const * const typestr{"Rose::BinaryAnalysis::AddressIntervalSet"};
6300 static constexpr bool traverse{false};
6301 static constexpr auto mbr_ptr{&SgAsmGenericStrtab::p_freeList};
6302 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6303 using bind = Desc<SgAsmGenericStrtab, Rose::BinaryAnalysis::AddressIntervalSet SgAsmGenericStrtab::*, &SgAsmGenericStrtab::p_freeList>;
6304};
6305template <> struct describe_field_t<SgAsmGenericStrtab,SgAsmStringStorage*,&SgAsmGenericStrtab::p_dontFree> {
6306 using parent = SgAsmGenericStrtab;
6308 static constexpr size_t position{3};
6309 static constexpr char const * const name{"dontFree"};
6310 static constexpr char const * const typestr{"SgAsmStringStorage*"};
6311 static constexpr bool traverse{false};
6312 static constexpr auto mbr_ptr{&SgAsmGenericStrtab::p_dontFree};
6313 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6314 using bind = Desc<SgAsmGenericStrtab, SgAsmStringStorage* SgAsmGenericStrtab::*, &SgAsmGenericStrtab::p_dontFree>;
6315};
6316template <> struct describe_field_t<SgAsmGenericStrtab,size_t,&SgAsmGenericStrtab::p_numberFreed> {
6317 using parent = SgAsmGenericStrtab;
6318 using field_type = size_t;
6319 static constexpr size_t position{4};
6320 static constexpr char const * const name{"numberFreed"};
6321 static constexpr char const * const typestr{"size_t"};
6322 static constexpr bool traverse{false};
6323 static constexpr auto mbr_ptr{&SgAsmGenericStrtab::p_numberFreed};
6324 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6325 using bind = Desc<SgAsmGenericStrtab, size_t SgAsmGenericStrtab::*, &SgAsmGenericStrtab::p_numberFreed>;
6326};
6336template <> struct node_from_variant_t<204> { using type = SgAsmGenericStrtab; };
6337
6338// Class: AsmGenericSymbol
6339template <> struct describe_field_t<SgAsmGenericSymbol,SgAsmGenericSymbol::SymbolDefState,&SgAsmGenericSymbol::p_definitionState> {
6340 using parent = SgAsmGenericSymbol;
6342 static constexpr size_t position{0};
6343 static constexpr char const * const name{"definitionState"};
6344 static constexpr char const * const typestr{"SgAsmGenericSymbol::SymbolDefState"};
6345 static constexpr bool traverse{false};
6346 static constexpr auto mbr_ptr{&SgAsmGenericSymbol::p_definitionState};
6347 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6348 using bind = Desc<SgAsmGenericSymbol, SgAsmGenericSymbol::SymbolDefState SgAsmGenericSymbol::*, &SgAsmGenericSymbol::p_definitionState>;
6349};
6350template <> struct describe_field_t<SgAsmGenericSymbol,SgAsmGenericSymbol::SymbolBinding,&SgAsmGenericSymbol::p_binding> {
6351 using parent = SgAsmGenericSymbol;
6353 static constexpr size_t position{1};
6354 static constexpr char const * const name{"binding"};
6355 static constexpr char const * const typestr{"SgAsmGenericSymbol::SymbolBinding"};
6356 static constexpr bool traverse{false};
6357 static constexpr auto mbr_ptr{&SgAsmGenericSymbol::p_binding};
6358 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6359 using bind = Desc<SgAsmGenericSymbol, SgAsmGenericSymbol::SymbolBinding SgAsmGenericSymbol::*, &SgAsmGenericSymbol::p_binding>;
6360};
6361template <> struct describe_field_t<SgAsmGenericSymbol,SgAsmGenericSymbol::SymbolType,&SgAsmGenericSymbol::p_type> {
6362 using parent = SgAsmGenericSymbol;
6364 static constexpr size_t position{2};
6365 static constexpr char const * const name{"type"};
6366 static constexpr char const * const typestr{"SgAsmGenericSymbol::SymbolType"};
6367 static constexpr bool traverse{false};
6368 static constexpr auto mbr_ptr{&SgAsmGenericSymbol::p_type};
6369 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6370 using bind = Desc<SgAsmGenericSymbol, SgAsmGenericSymbol::SymbolType SgAsmGenericSymbol::*, &SgAsmGenericSymbol::p_type>;
6371};
6372template <> struct describe_field_t<SgAsmGenericSymbol,rose_addr_t,&SgAsmGenericSymbol::p_value> {
6373 using parent = SgAsmGenericSymbol;
6374 using field_type = rose_addr_t;
6375 static constexpr size_t position{3};
6376 static constexpr char const * const name{"value"};
6377 static constexpr char const * const typestr{"rose_addr_t"};
6378 static constexpr bool traverse{false};
6379 static constexpr auto mbr_ptr{&SgAsmGenericSymbol::p_value};
6380 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6381 using bind = Desc<SgAsmGenericSymbol, rose_addr_t SgAsmGenericSymbol::*, &SgAsmGenericSymbol::p_value>;
6382};
6383template <> struct describe_field_t<SgAsmGenericSymbol,rose_addr_t,&SgAsmGenericSymbol::p_size> {
6384 using parent = SgAsmGenericSymbol;
6385 using field_type = rose_addr_t;
6386 static constexpr size_t position{4};
6387 static constexpr char const * const name{"size"};
6388 static constexpr char const * const typestr{"rose_addr_t"};
6389 static constexpr bool traverse{false};
6390 static constexpr auto mbr_ptr{&SgAsmGenericSymbol::p_size};
6391 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6392 using bind = Desc<SgAsmGenericSymbol, rose_addr_t SgAsmGenericSymbol::*, &SgAsmGenericSymbol::p_size>;
6393};
6394template <> struct describe_field_t<SgAsmGenericSymbol,SgAsmGenericSection*,&SgAsmGenericSymbol::p_bound> {
6395 using parent = SgAsmGenericSymbol;
6397 static constexpr size_t position{5};
6398 static constexpr char const * const name{"bound"};
6399 static constexpr char const * const typestr{"SgAsmGenericSection*"};
6400 static constexpr bool traverse{false};
6401 static constexpr auto mbr_ptr{&SgAsmGenericSymbol::p_bound};
6402 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6403 using bind = Desc<SgAsmGenericSymbol, SgAsmGenericSection* SgAsmGenericSymbol::*, &SgAsmGenericSymbol::p_bound>;
6404};
6405template <> struct describe_field_t<SgAsmGenericSymbol,SgAsmGenericString*,&SgAsmGenericSymbol::p_name> {
6406 using parent = SgAsmGenericSymbol;
6408 static constexpr size_t position{6};
6409 static constexpr char const * const name{"name"};
6410 static constexpr char const * const typestr{"SgAsmGenericString*"};
6411 static constexpr bool traverse{true};
6412 static constexpr auto mbr_ptr{&SgAsmGenericSymbol::p_name};
6413 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6414 using bind = Desc<SgAsmGenericSymbol, SgAsmGenericString* SgAsmGenericSymbol::*, &SgAsmGenericSymbol::p_name>;
6415};
6425template <> struct node_from_variant_t<205> { using type = SgAsmGenericSymbol; };
6426
6427// Class: AsmGenericSymbolList
6428template <> struct describe_field_t<SgAsmGenericSymbolList,SgAsmGenericSymbolPtrList,&SgAsmGenericSymbolList::p_symbols> {
6430 using field_type = SgAsmGenericSymbolPtrList;
6431 static constexpr size_t position{0};
6432 static constexpr char const * const name{"symbols"};
6433 static constexpr char const * const typestr{"SgAsmGenericSymbolPtrList"};
6434 static constexpr bool traverse{false};
6435 static constexpr auto mbr_ptr{&SgAsmGenericSymbolList::p_symbols};
6436 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6437 using bind = Desc<SgAsmGenericSymbolList, SgAsmGenericSymbolPtrList SgAsmGenericSymbolList::*, &SgAsmGenericSymbolList::p_symbols>;
6438};
6442 static constexpr char const * const name{"AsmGenericSymbolList"};
6443 static constexpr unsigned long variant{206};
6444 static constexpr bool concrete{true};
6445 using subclasses_t = mp::List<>;
6447};
6448template <> struct node_from_variant_t<206> { using type = SgAsmGenericSymbolList; };
6449
6450// Class: AsmIndirectRegisterExpression
6451template <> struct describe_field_t<SgAsmIndirectRegisterExpression,Rose::BinaryAnalysis::RegisterDescriptor,&SgAsmIndirectRegisterExpression::p_stride> {
6454 static constexpr size_t position{0};
6455 static constexpr char const * const name{"stride"};
6456 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RegisterDescriptor"};
6457 static constexpr bool traverse{false};
6458 static constexpr auto mbr_ptr{&SgAsmIndirectRegisterExpression::p_stride};
6459 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6460 using bind = Desc<SgAsmIndirectRegisterExpression, Rose::BinaryAnalysis::RegisterDescriptor SgAsmIndirectRegisterExpression::*, &SgAsmIndirectRegisterExpression::p_stride>;
6461};
6462template <> struct describe_field_t<SgAsmIndirectRegisterExpression,Rose::BinaryAnalysis::RegisterDescriptor,&SgAsmIndirectRegisterExpression::p_offset> {
6465 static constexpr size_t position{1};
6466 static constexpr char const * const name{"offset"};
6467 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RegisterDescriptor"};
6468 static constexpr bool traverse{false};
6469 static constexpr auto mbr_ptr{&SgAsmIndirectRegisterExpression::p_offset};
6470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6471 using bind = Desc<SgAsmIndirectRegisterExpression, Rose::BinaryAnalysis::RegisterDescriptor SgAsmIndirectRegisterExpression::*, &SgAsmIndirectRegisterExpression::p_offset>;
6472};
6473template <> struct describe_field_t<SgAsmIndirectRegisterExpression,size_t,&SgAsmIndirectRegisterExpression::p_index> {
6475 using field_type = size_t;
6476 static constexpr size_t position{2};
6477 static constexpr char const * const name{"index"};
6478 static constexpr char const * const typestr{"size_t"};
6479 static constexpr bool traverse{false};
6480 static constexpr auto mbr_ptr{&SgAsmIndirectRegisterExpression::p_index};
6481 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6482 using bind = Desc<SgAsmIndirectRegisterExpression, size_t SgAsmIndirectRegisterExpression::*, &SgAsmIndirectRegisterExpression::p_index>;
6483};
6484template <> struct describe_field_t<SgAsmIndirectRegisterExpression,size_t,&SgAsmIndirectRegisterExpression::p_modulus> {
6486 using field_type = size_t;
6487 static constexpr size_t position{3};
6488 static constexpr char const * const name{"modulus"};
6489 static constexpr char const * const typestr{"size_t"};
6490 static constexpr bool traverse{false};
6491 static constexpr auto mbr_ptr{&SgAsmIndirectRegisterExpression::p_modulus};
6492 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6493 using bind = Desc<SgAsmIndirectRegisterExpression, size_t SgAsmIndirectRegisterExpression::*, &SgAsmIndirectRegisterExpression::p_modulus>;
6494};
6504template <> struct node_from_variant_t<207> { using type = SgAsmIndirectRegisterExpression; };
6505
6506// Class: AsmInstruction
6507template <> struct describe_field_t<SgAsmInstruction,uint8_t,&SgAsmInstruction::p_architectureId> {
6508 using parent = SgAsmInstruction;
6509 using field_type = uint8_t;
6510 static constexpr size_t position{0};
6511 static constexpr char const * const name{"architectureId"};
6512 static constexpr char const * const typestr{"uint8_t"};
6513 static constexpr bool traverse{false};
6514 static constexpr auto mbr_ptr{&SgAsmInstruction::p_architectureId};
6515 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6516 using bind = Desc<SgAsmInstruction, uint8_t SgAsmInstruction::*, &SgAsmInstruction::p_architectureId>;
6517};
6518template <> struct describe_field_t<SgAsmInstruction,SgUnsignedCharList,&SgAsmInstruction::p_rawBytes> {
6519 using parent = SgAsmInstruction;
6520 using field_type = SgUnsignedCharList;
6521 static constexpr size_t position{1};
6522 static constexpr char const * const name{"rawBytes"};
6523 static constexpr char const * const typestr{"SgUnsignedCharList"};
6524 static constexpr bool traverse{false};
6525 static constexpr auto mbr_ptr{&SgAsmInstruction::p_rawBytes};
6526 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6527 using bind = Desc<SgAsmInstruction, SgUnsignedCharList SgAsmInstruction::*, &SgAsmInstruction::p_rawBytes>;
6528};
6529template <> struct describe_field_t<SgAsmInstruction,SgAsmOperandList*,&SgAsmInstruction::p_operandList> {
6530 using parent = SgAsmInstruction;
6532 static constexpr size_t position{2};
6533 static constexpr char const * const name{"operandList"};
6534 static constexpr char const * const typestr{"SgAsmOperandList*"};
6535 static constexpr bool traverse{true};
6536 static constexpr auto mbr_ptr{&SgAsmInstruction::p_operandList};
6537 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6538 using bind = Desc<SgAsmInstruction, SgAsmOperandList* SgAsmInstruction::*, &SgAsmInstruction::p_operandList>;
6539};
6540template <> struct describe_field_t<SgAsmInstruction,SgAsmInstruction*,&SgAsmInstruction::p_delaySlot> {
6541 using parent = SgAsmInstruction;
6543 static constexpr size_t position{3};
6544 static constexpr char const * const name{"delaySlot"};
6545 static constexpr char const * const typestr{"SgAsmInstruction*"};
6546 static constexpr bool traverse{false};
6547 static constexpr auto mbr_ptr{&SgAsmInstruction::p_delaySlot};
6548 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6549 using bind = Desc<SgAsmInstruction, SgAsmInstruction* SgAsmInstruction::*, &SgAsmInstruction::p_delaySlot>;
6550};
6551template <> struct describe_field_t<SgAsmInstruction,SgAsmStatementPtrList,&SgAsmInstruction::p_sources> {
6552 using parent = SgAsmInstruction;
6553 using field_type = SgAsmStatementPtrList;
6554 static constexpr size_t position{4};
6555 static constexpr char const * const name{"sources"};
6556 static constexpr char const * const typestr{"SgAsmStatementPtrList"};
6557 static constexpr bool traverse{false};
6558 static constexpr auto mbr_ptr{&SgAsmInstruction::p_sources};
6559 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6560 using bind = Desc<SgAsmInstruction, SgAsmStatementPtrList SgAsmInstruction::*, &SgAsmInstruction::p_sources>;
6561};
6562template <> struct describe_field_t<SgAsmInstruction,int64_t,&SgAsmInstruction::p_stackDeltaIn> {
6563 using parent = SgAsmInstruction;
6564 using field_type = int64_t;
6565 static constexpr size_t position{5};
6566 static constexpr char const * const name{"stackDeltaIn"};
6567 static constexpr char const * const typestr{"int64_t"};
6568 static constexpr bool traverse{false};
6569 static constexpr auto mbr_ptr{&SgAsmInstruction::p_stackDeltaIn};
6570 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6571 using bind = Desc<SgAsmInstruction, int64_t SgAsmInstruction::*, &SgAsmInstruction::p_stackDeltaIn>;
6572};
6573template <> struct describe_field_t<SgAsmInstruction,SgAsmExprListExp*,&SgAsmInstruction::p_semantics> {
6574 using parent = SgAsmInstruction;
6576 static constexpr size_t position{6};
6577 static constexpr char const * const name{"semantics"};
6578 static constexpr char const * const typestr{"SgAsmExprListExp*"};
6579 static constexpr bool traverse{true};
6580 static constexpr auto mbr_ptr{&SgAsmInstruction::p_semantics};
6581 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6582 using bind = Desc<SgAsmInstruction, SgAsmExprListExp* SgAsmInstruction::*, &SgAsmInstruction::p_semantics>;
6583};
6593template <> struct node_from_variant_t<208> { using type = SgAsmInstruction; };
6594
6595// Class: AsmIntegerValueExpression
6596template <> struct describe_field_t<SgAsmIntegerValueExpression,SgNode*,&SgAsmIntegerValueExpression::p_baseNode> {
6598 using field_type = SgNode*;
6599 static constexpr size_t position{0};
6600 static constexpr char const * const name{"baseNode"};
6601 static constexpr char const * const typestr{"SgNode*"};
6602 static constexpr bool traverse{false};
6603 static constexpr auto mbr_ptr{&SgAsmIntegerValueExpression::p_baseNode};
6604 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6605 using bind = Desc<SgAsmIntegerValueExpression, SgNode* SgAsmIntegerValueExpression::*, &SgAsmIntegerValueExpression::p_baseNode>;
6606};
6610 static constexpr char const * const name{"AsmIntegerValueExpression"};
6611 static constexpr unsigned long variant{209};
6612 static constexpr bool concrete{true};
6613 using subclasses_t = mp::List<>;
6615};
6616template <> struct node_from_variant_t<209> { using type = SgAsmIntegerValueExpression; };
6617
6618// Class: AsmIntegerType
6619template <> struct describe_field_t<SgAsmIntegerType,bool,&SgAsmIntegerType::p_isSigned> {
6620 using parent = SgAsmIntegerType;
6621 using field_type = bool;
6622 static constexpr size_t position{0};
6623 static constexpr char const * const name{"isSigned"};
6624 static constexpr char const * const typestr{"bool"};
6625 static constexpr bool traverse{false};
6626 static constexpr auto mbr_ptr{&SgAsmIntegerType::p_isSigned};
6627 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6628 using bind = Desc<SgAsmIntegerType, bool SgAsmIntegerType::*, &SgAsmIntegerType::p_isSigned>;
6629};
6631 using node = SgAsmIntegerType;
6632 using base = SgAsmScalarType;
6633 static constexpr char const * const name{"AsmIntegerType"};
6634 static constexpr unsigned long variant{210};
6635 static constexpr bool concrete{true};
6636 using subclasses_t = mp::List<>;
6638};
6639template <> struct node_from_variant_t<210> { using type = SgAsmIntegerType; };
6640
6641// Class: AsmInterpretation
6642template <> struct describe_field_t<SgAsmInterpretation,SgAsmGenericHeaderList*,&SgAsmInterpretation::p_headers> {
6645 static constexpr size_t position{0};
6646 static constexpr char const * const name{"headers"};
6647 static constexpr char const * const typestr{"SgAsmGenericHeaderList*"};
6648 static constexpr bool traverse{false};
6649 static constexpr auto mbr_ptr{&SgAsmInterpretation::p_headers};
6650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6651 using bind = Desc<SgAsmInterpretation, SgAsmGenericHeaderList* SgAsmInterpretation::*, &SgAsmInterpretation::p_headers>;
6652};
6653template <> struct describe_field_t<SgAsmInterpretation,SgAsmBlock*,&SgAsmInterpretation::p_globalBlock> {
6655 using field_type = SgAsmBlock*;
6656 static constexpr size_t position{1};
6657 static constexpr char const * const name{"globalBlock"};
6658 static constexpr char const * const typestr{"SgAsmBlock*"};
6659 static constexpr bool traverse{true};
6660 static constexpr auto mbr_ptr{&SgAsmInterpretation::p_globalBlock};
6661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6662 using bind = Desc<SgAsmInterpretation, SgAsmBlock* SgAsmInterpretation::*, &SgAsmInterpretation::p_globalBlock>;
6663};
6664template <> struct describe_field_t<SgAsmInterpretation,bool,&SgAsmInterpretation::p_coverageComputed> {
6666 using field_type = bool;
6667 static constexpr size_t position{2};
6668 static constexpr char const * const name{"coverageComputed"};
6669 static constexpr char const * const typestr{"bool"};
6670 static constexpr bool traverse{false};
6671 static constexpr auto mbr_ptr{&SgAsmInterpretation::p_coverageComputed};
6672 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6673 using bind = Desc<SgAsmInterpretation, bool SgAsmInterpretation::*, &SgAsmInterpretation::p_coverageComputed>;
6674};
6675template <> struct describe_field_t<SgAsmInterpretation,double,&SgAsmInterpretation::p_percentageCoverage> {
6677 using field_type = double;
6678 static constexpr size_t position{3};
6679 static constexpr char const * const name{"percentageCoverage"};
6680 static constexpr char const * const typestr{"double"};
6681 static constexpr bool traverse{false};
6682 static constexpr auto mbr_ptr{&SgAsmInterpretation::p_percentageCoverage};
6683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6684 using bind = Desc<SgAsmInterpretation, double SgAsmInterpretation::*, &SgAsmInterpretation::p_percentageCoverage>;
6685};
6695template <> struct node_from_variant_t<211> { using type = SgAsmInterpretation; };
6696
6697// Class: AsmInterpretationList
6698template <> struct describe_field_t<SgAsmInterpretationList,SgAsmInterpretationPtrList,&SgAsmInterpretationList::p_interpretations> {
6700 using field_type = SgAsmInterpretationPtrList;
6701 static constexpr size_t position{0};
6702 static constexpr char const * const name{"interpretations"};
6703 static constexpr char const * const typestr{"SgAsmInterpretationPtrList"};
6704 static constexpr bool traverse{true};
6705 static constexpr auto mbr_ptr{&SgAsmInterpretationList::p_interpretations};
6706 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6707 using bind = Desc<SgAsmInterpretationList, SgAsmInterpretationPtrList SgAsmInterpretationList::*, &SgAsmInterpretationList::p_interpretations>;
6708};
6711 using base = SgAsmNode;
6712 static constexpr char const * const name{"AsmInterpretationList"};
6713 static constexpr unsigned long variant{212};
6714 static constexpr bool concrete{true};
6715 using subclasses_t = mp::List<>;
6717};
6718template <> struct node_from_variant_t<212> { using type = SgAsmInterpretationList; };
6719
6720// Class: AsmJvmAttribute
6721template <> struct describe_field_t<SgAsmJvmAttribute,uint16_t,&SgAsmJvmAttribute::p_attribute_name_index> {
6722 using parent = SgAsmJvmAttribute;
6723 using field_type = uint16_t;
6724 static constexpr size_t position{0};
6725 static constexpr char const * const name{"attribute_name_index"};
6726 static constexpr char const * const typestr{"uint16_t"};
6727 static constexpr bool traverse{false};
6728 static constexpr auto mbr_ptr{&SgAsmJvmAttribute::p_attribute_name_index};
6729 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6730 using bind = Desc<SgAsmJvmAttribute, uint16_t SgAsmJvmAttribute::*, &SgAsmJvmAttribute::p_attribute_name_index>;
6731};
6732template <> struct describe_field_t<SgAsmJvmAttribute,uint32_t,&SgAsmJvmAttribute::p_attribute_length> {
6733 using parent = SgAsmJvmAttribute;
6734 using field_type = uint32_t;
6735 static constexpr size_t position{1};
6736 static constexpr char const * const name{"attribute_length"};
6737 static constexpr char const * const typestr{"uint32_t"};
6738 static constexpr bool traverse{false};
6739 static constexpr auto mbr_ptr{&SgAsmJvmAttribute::p_attribute_length};
6740 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6741 using bind = Desc<SgAsmJvmAttribute, uint32_t SgAsmJvmAttribute::*, &SgAsmJvmAttribute::p_attribute_length>;
6742};
6752template <> struct node_from_variant_t<213> { using type = SgAsmJvmAttribute; };
6753
6754// Class: AsmJvmCodeAttribute
6755template <> struct describe_field_t<SgAsmJvmCodeAttribute,uint16_t,&SgAsmJvmCodeAttribute::p_max_stack> {
6757 using field_type = uint16_t;
6758 static constexpr size_t position{0};
6759 static constexpr char const * const name{"max_stack"};
6760 static constexpr char const * const typestr{"uint16_t"};
6761 static constexpr bool traverse{false};
6762 static constexpr auto mbr_ptr{&SgAsmJvmCodeAttribute::p_max_stack};
6763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6764 using bind = Desc<SgAsmJvmCodeAttribute, uint16_t SgAsmJvmCodeAttribute::*, &SgAsmJvmCodeAttribute::p_max_stack>;
6765};
6766template <> struct describe_field_t<SgAsmJvmCodeAttribute,uint16_t,&SgAsmJvmCodeAttribute::p_max_locals> {
6768 using field_type = uint16_t;
6769 static constexpr size_t position{1};
6770 static constexpr char const * const name{"max_locals"};
6771 static constexpr char const * const typestr{"uint16_t"};
6772 static constexpr bool traverse{false};
6773 static constexpr auto mbr_ptr{&SgAsmJvmCodeAttribute::p_max_locals};
6774 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6775 using bind = Desc<SgAsmJvmCodeAttribute, uint16_t SgAsmJvmCodeAttribute::*, &SgAsmJvmCodeAttribute::p_max_locals>;
6776};
6777template <> struct describe_field_t<SgAsmJvmCodeAttribute,uint32_t,&SgAsmJvmCodeAttribute::p_code_length> {
6779 using field_type = uint32_t;
6780 static constexpr size_t position{2};
6781 static constexpr char const * const name{"code_length"};
6782 static constexpr char const * const typestr{"uint32_t"};
6783 static constexpr bool traverse{false};
6784 static constexpr auto mbr_ptr{&SgAsmJvmCodeAttribute::p_code_length};
6785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6786 using bind = Desc<SgAsmJvmCodeAttribute, uint32_t SgAsmJvmCodeAttribute::*, &SgAsmJvmCodeAttribute::p_code_length>;
6787};
6788template <> struct describe_field_t<SgAsmJvmCodeAttribute,const char*,&SgAsmJvmCodeAttribute::p_code> {
6790 using field_type = const char*;
6791 static constexpr size_t position{3};
6792 static constexpr char const * const name{"code"};
6793 static constexpr char const * const typestr{"const char*"};
6794 static constexpr bool traverse{false};
6795 static constexpr auto mbr_ptr{&SgAsmJvmCodeAttribute::p_code};
6796 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6797 using bind = Desc<SgAsmJvmCodeAttribute, const char* SgAsmJvmCodeAttribute::*, &SgAsmJvmCodeAttribute::p_code>;
6798};
6799template <> struct describe_field_t<SgAsmJvmCodeAttribute,SgAsmJvmExceptionTable*,&SgAsmJvmCodeAttribute::p_exception_table> {
6802 static constexpr size_t position{4};
6803 static constexpr char const * const name{"exception_table"};
6804 static constexpr char const * const typestr{"SgAsmJvmExceptionTable*"};
6805 static constexpr bool traverse{false};
6806 static constexpr auto mbr_ptr{&SgAsmJvmCodeAttribute::p_exception_table};
6807 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6808 using bind = Desc<SgAsmJvmCodeAttribute, SgAsmJvmExceptionTable* SgAsmJvmCodeAttribute::*, &SgAsmJvmCodeAttribute::p_exception_table>;
6809};
6810template <> struct describe_field_t<SgAsmJvmCodeAttribute,SgAsmJvmAttributeTable*,&SgAsmJvmCodeAttribute::p_attribute_table> {
6813 static constexpr size_t position{5};
6814 static constexpr char const * const name{"attribute_table"};
6815 static constexpr char const * const typestr{"SgAsmJvmAttributeTable*"};
6816 static constexpr bool traverse{false};
6817 static constexpr auto mbr_ptr{&SgAsmJvmCodeAttribute::p_attribute_table};
6818 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6819 using bind = Desc<SgAsmJvmCodeAttribute, SgAsmJvmAttributeTable* SgAsmJvmCodeAttribute::*, &SgAsmJvmCodeAttribute::p_attribute_table>;
6820};
6821template <> struct describe_field_t<SgAsmJvmCodeAttribute,rose_addr_t,&SgAsmJvmCodeAttribute::p_code_offset> {
6823 using field_type = rose_addr_t;
6824 static constexpr size_t position{6};
6825 static constexpr char const * const name{"code_offset"};
6826 static constexpr char const * const typestr{"rose_addr_t"};
6827 static constexpr bool traverse{false};
6828 static constexpr auto mbr_ptr{&SgAsmJvmCodeAttribute::p_code_offset};
6829 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6830 using bind = Desc<SgAsmJvmCodeAttribute, rose_addr_t SgAsmJvmCodeAttribute::*, &SgAsmJvmCodeAttribute::p_code_offset>;
6831};
6841template <> struct node_from_variant_t<214> { using type = SgAsmJvmCodeAttribute; };
6842
6843// Class: AsmJvmMethod
6844template <> struct describe_field_t<SgAsmJvmMethod,uint16_t,&SgAsmJvmMethod::p_access_flags> {
6845 using parent = SgAsmJvmMethod;
6846 using field_type = uint16_t;
6847 static constexpr size_t position{0};
6848 static constexpr char const * const name{"access_flags"};
6849 static constexpr char const * const typestr{"uint16_t"};
6850 static constexpr bool traverse{false};
6851 static constexpr auto mbr_ptr{&SgAsmJvmMethod::p_access_flags};
6852 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6853 using bind = Desc<SgAsmJvmMethod, uint16_t SgAsmJvmMethod::*, &SgAsmJvmMethod::p_access_flags>;
6854};
6855template <> struct describe_field_t<SgAsmJvmMethod,uint16_t,&SgAsmJvmMethod::p_name_index> {
6856 using parent = SgAsmJvmMethod;
6857 using field_type = uint16_t;
6858 static constexpr size_t position{1};
6859 static constexpr char const * const name{"name_index"};
6860 static constexpr char const * const typestr{"uint16_t"};
6861 static constexpr bool traverse{false};
6862 static constexpr auto mbr_ptr{&SgAsmJvmMethod::p_name_index};
6863 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6864 using bind = Desc<SgAsmJvmMethod, uint16_t SgAsmJvmMethod::*, &SgAsmJvmMethod::p_name_index>;
6865};
6866template <> struct describe_field_t<SgAsmJvmMethod,uint16_t,&SgAsmJvmMethod::p_descriptor_index> {
6867 using parent = SgAsmJvmMethod;
6868 using field_type = uint16_t;
6869 static constexpr size_t position{2};
6870 static constexpr char const * const name{"descriptor_index"};
6871 static constexpr char const * const typestr{"uint16_t"};
6872 static constexpr bool traverse{false};
6873 static constexpr auto mbr_ptr{&SgAsmJvmMethod::p_descriptor_index};
6874 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6875 using bind = Desc<SgAsmJvmMethod, uint16_t SgAsmJvmMethod::*, &SgAsmJvmMethod::p_descriptor_index>;
6876};
6877template <> struct describe_field_t<SgAsmJvmMethod,SgAsmJvmAttributeTable*,&SgAsmJvmMethod::p_attribute_table> {
6878 using parent = SgAsmJvmMethod;
6880 static constexpr size_t position{3};
6881 static constexpr char const * const name{"attribute_table"};
6882 static constexpr char const * const typestr{"SgAsmJvmAttributeTable*"};
6883 static constexpr bool traverse{true};
6884 static constexpr auto mbr_ptr{&SgAsmJvmMethod::p_attribute_table};
6885 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6886 using bind = Desc<SgAsmJvmMethod, SgAsmJvmAttributeTable* SgAsmJvmMethod::*, &SgAsmJvmMethod::p_attribute_table>;
6887};
6888template <> struct describe_field_t<SgAsmJvmMethod,SgAsmInstructionList*,&SgAsmJvmMethod::p_instruction_list> {
6889 using parent = SgAsmJvmMethod;
6891 static constexpr size_t position{4};
6892 static constexpr char const * const name{"instruction_list"};
6893 static constexpr char const * const typestr{"SgAsmInstructionList*"};
6894 static constexpr bool traverse{false};
6895 static constexpr auto mbr_ptr{&SgAsmJvmMethod::p_instruction_list};
6896 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6897 using bind = Desc<SgAsmJvmMethod, SgAsmInstructionList* SgAsmJvmMethod::*, &SgAsmJvmMethod::p_instruction_list>;
6898};
6908template <> struct node_from_variant_t<215> { using type = SgAsmJvmMethod; };
6909
6910// Class: AsmJvmConstantPool
6911template <> struct describe_field_t<SgAsmJvmConstantPool,SgAsmJvmConstantPoolEntryPtrList,&SgAsmJvmConstantPool::p_entries> {
6913 using field_type = SgAsmJvmConstantPoolEntryPtrList;
6914 static constexpr size_t position{0};
6915 static constexpr char const * const name{"entries"};
6916 static constexpr char const * const typestr{"SgAsmJvmConstantPoolEntryPtrList"};
6917 static constexpr bool traverse{false};
6918 static constexpr auto mbr_ptr{&SgAsmJvmConstantPool::p_entries};
6919 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6920 using bind = Desc<SgAsmJvmConstantPool, SgAsmJvmConstantPoolEntryPtrList SgAsmJvmConstantPool::*, &SgAsmJvmConstantPool::p_entries>;
6921};
6923 using node = SgAsmJvmConstantPool;
6924 using base = SgAsmGenericSection;
6925 static constexpr char const * const name{"AsmJvmConstantPool"};
6926 static constexpr unsigned long variant{216};
6927 static constexpr bool concrete{true};
6928 using subclasses_t = mp::List<>;
6930};
6931template <> struct node_from_variant_t<216> { using type = SgAsmJvmConstantPool; };
6932
6933// Class: AsmJvmConstantPoolEntry
6934template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,SgAsmJvmConstantPoolEntry::Kind,&SgAsmJvmConstantPoolEntry::p_tag> {
6937 static constexpr size_t position{0};
6938 static constexpr char const * const name{"tag"};
6939 static constexpr char const * const typestr{"SgAsmJvmConstantPoolEntry::Kind"};
6940 static constexpr bool traverse{false};
6941 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_tag};
6942 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6943 using bind = Desc<SgAsmJvmConstantPoolEntry, SgAsmJvmConstantPoolEntry::Kind SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_tag>;
6944};
6945template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint32_t,&SgAsmJvmConstantPoolEntry::p_bytes> {
6947 using field_type = uint32_t;
6948 static constexpr size_t position{1};
6949 static constexpr char const * const name{"bytes"};
6950 static constexpr char const * const typestr{"uint32_t"};
6951 static constexpr bool traverse{false};
6952 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_bytes};
6953 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6954 using bind = Desc<SgAsmJvmConstantPoolEntry, uint32_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_bytes>;
6955};
6956template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint32_t,&SgAsmJvmConstantPoolEntry::p_hi_bytes> {
6958 using field_type = uint32_t;
6959 static constexpr size_t position{2};
6960 static constexpr char const * const name{"hi_bytes"};
6961 static constexpr char const * const typestr{"uint32_t"};
6962 static constexpr bool traverse{false};
6963 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_hi_bytes};
6964 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6965 using bind = Desc<SgAsmJvmConstantPoolEntry, uint32_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_hi_bytes>;
6966};
6967template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint32_t,&SgAsmJvmConstantPoolEntry::p_low_bytes> {
6969 using field_type = uint32_t;
6970 static constexpr size_t position{3};
6971 static constexpr char const * const name{"low_bytes"};
6972 static constexpr char const * const typestr{"uint32_t"};
6973 static constexpr bool traverse{false};
6974 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_low_bytes};
6975 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6976 using bind = Desc<SgAsmJvmConstantPoolEntry, uint32_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_low_bytes>;
6977};
6978template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_bootstrap_method_attr_index> {
6980 using field_type = uint16_t;
6981 static constexpr size_t position{4};
6982 static constexpr char const * const name{"bootstrap_method_attr_index"};
6983 static constexpr char const * const typestr{"uint16_t"};
6984 static constexpr bool traverse{false};
6985 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_bootstrap_method_attr_index};
6986 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6987 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_bootstrap_method_attr_index>;
6988};
6989template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_class_index> {
6991 using field_type = uint16_t;
6992 static constexpr size_t position{5};
6993 static constexpr char const * const name{"class_index"};
6994 static constexpr char const * const typestr{"uint16_t"};
6995 static constexpr bool traverse{false};
6996 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_class_index};
6997 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
6998 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_class_index>;
6999};
7000template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_descriptor_index> {
7002 using field_type = uint16_t;
7003 static constexpr size_t position{6};
7004 static constexpr char const * const name{"descriptor_index"};
7005 static constexpr char const * const typestr{"uint16_t"};
7006 static constexpr bool traverse{false};
7007 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_descriptor_index};
7008 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7009 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_descriptor_index>;
7010};
7011template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_name_index> {
7013 using field_type = uint16_t;
7014 static constexpr size_t position{7};
7015 static constexpr char const * const name{"name_index"};
7016 static constexpr char const * const typestr{"uint16_t"};
7017 static constexpr bool traverse{false};
7018 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_name_index};
7019 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7020 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_name_index>;
7021};
7022template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_name_and_type_index> {
7024 using field_type = uint16_t;
7025 static constexpr size_t position{8};
7026 static constexpr char const * const name{"name_and_type_index"};
7027 static constexpr char const * const typestr{"uint16_t"};
7028 static constexpr bool traverse{false};
7029 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_name_and_type_index};
7030 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7031 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_name_and_type_index>;
7032};
7033template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_reference_index> {
7035 using field_type = uint16_t;
7036 static constexpr size_t position{9};
7037 static constexpr char const * const name{"reference_index"};
7038 static constexpr char const * const typestr{"uint16_t"};
7039 static constexpr bool traverse{false};
7040 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_reference_index};
7041 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7042 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_reference_index>;
7043};
7044template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint8_t,&SgAsmJvmConstantPoolEntry::p_reference_kind> {
7046 using field_type = uint8_t;
7047 static constexpr size_t position{10};
7048 static constexpr char const * const name{"reference_kind"};
7049 static constexpr char const * const typestr{"uint8_t"};
7050 static constexpr bool traverse{false};
7051 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_reference_kind};
7052 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7053 using bind = Desc<SgAsmJvmConstantPoolEntry, uint8_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_reference_kind>;
7054};
7055template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_string_index> {
7057 using field_type = uint16_t;
7058 static constexpr size_t position{11};
7059 static constexpr char const * const name{"string_index"};
7060 static constexpr char const * const typestr{"uint16_t"};
7061 static constexpr bool traverse{false};
7062 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_string_index};
7063 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7064 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_string_index>;
7065};
7066template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,uint16_t,&SgAsmJvmConstantPoolEntry::p_length> {
7068 using field_type = uint16_t;
7069 static constexpr size_t position{12};
7070 static constexpr char const * const name{"length"};
7071 static constexpr char const * const typestr{"uint16_t"};
7072 static constexpr bool traverse{false};
7073 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_length};
7074 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7075 using bind = Desc<SgAsmJvmConstantPoolEntry, uint16_t SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_length>;
7076};
7077template <> struct describe_field_t<SgAsmJvmConstantPoolEntry,char*,&SgAsmJvmConstantPoolEntry::p_utf8_bytes> {
7079 using field_type = char*;
7080 static constexpr size_t position{13};
7081 static constexpr char const * const name{"utf8_bytes"};
7082 static constexpr char const * const typestr{"char*"};
7083 static constexpr bool traverse{false};
7084 static constexpr auto mbr_ptr{&SgAsmJvmConstantPoolEntry::p_utf8_bytes};
7085 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7086 using bind = Desc<SgAsmJvmConstantPoolEntry, char* SgAsmJvmConstantPoolEntry::*, &SgAsmJvmConstantPoolEntry::p_utf8_bytes>;
7087};
7090 using base = SgAsmJvmNode;
7091 static constexpr char const * const name{"AsmJvmConstantPoolEntry"};
7092 static constexpr unsigned long variant{217};
7093 static constexpr bool concrete{true};
7094 using subclasses_t = mp::List<>;
7096};
7097template <> struct node_from_variant_t<217> { using type = SgAsmJvmConstantPoolEntry; };
7098
7099// Class: AsmJvmConstantValue
7100template <> struct describe_field_t<SgAsmJvmConstantValue,uint16_t,&SgAsmJvmConstantValue::p_constantvalue_index> {
7102 using field_type = uint16_t;
7103 static constexpr size_t position{0};
7104 static constexpr char const * const name{"constantvalue_index"};
7105 static constexpr char const * const typestr{"uint16_t"};
7106 static constexpr bool traverse{false};
7107 static constexpr auto mbr_ptr{&SgAsmJvmConstantValue::p_constantvalue_index};
7108 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7109 using bind = Desc<SgAsmJvmConstantValue, uint16_t SgAsmJvmConstantValue::*, &SgAsmJvmConstantValue::p_constantvalue_index>;
7110};
7113 using base = SgAsmJvmAttribute;
7114 static constexpr char const * const name{"AsmJvmConstantValue"};
7115 static constexpr unsigned long variant{218};
7116 static constexpr bool concrete{true};
7117 using subclasses_t = mp::List<>;
7119};
7120template <> struct node_from_variant_t<218> { using type = SgAsmJvmConstantValue; };
7121
7122// Class: AsmJvmInstruction
7123template <> struct describe_field_t<SgAsmJvmInstruction,Rose::BinaryAnalysis::JvmInstructionKind,&SgAsmJvmInstruction::p_kind> {
7125 using field_type = Rose::BinaryAnalysis::JvmInstructionKind;
7126 static constexpr size_t position{0};
7127 static constexpr char const * const name{"kind"};
7128 static constexpr char const * const typestr{"Rose::BinaryAnalysis::JvmInstructionKind"};
7129 static constexpr bool traverse{false};
7130 static constexpr auto mbr_ptr{&SgAsmJvmInstruction::p_kind};
7131 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7132 using bind = Desc<SgAsmJvmInstruction, Rose::BinaryAnalysis::JvmInstructionKind SgAsmJvmInstruction::*, &SgAsmJvmInstruction::p_kind>;
7133};
7135 using node = SgAsmJvmInstruction;
7136 using base = SgAsmInstruction;
7137 static constexpr char const * const name{"AsmJvmInstruction"};
7138 static constexpr unsigned long variant{219};
7139 static constexpr bool concrete{true};
7140 using subclasses_t = mp::List<>;
7142};
7143template <> struct node_from_variant_t<219> { using type = SgAsmJvmInstruction; };
7144
7145// Class: AsmJvmFileHeader
7146template <> struct describe_field_t<SgAsmJvmFileHeader,uint16_t,&SgAsmJvmFileHeader::p_minor_version> {
7147 using parent = SgAsmJvmFileHeader;
7148 using field_type = uint16_t;
7149 static constexpr size_t position{0};
7150 static constexpr char const * const name{"minor_version"};
7151 static constexpr char const * const typestr{"uint16_t"};
7152 static constexpr bool traverse{false};
7153 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_minor_version};
7154 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7155 using bind = Desc<SgAsmJvmFileHeader, uint16_t SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_minor_version>;
7156};
7157template <> struct describe_field_t<SgAsmJvmFileHeader,uint16_t,&SgAsmJvmFileHeader::p_major_version> {
7158 using parent = SgAsmJvmFileHeader;
7159 using field_type = uint16_t;
7160 static constexpr size_t position{1};
7161 static constexpr char const * const name{"major_version"};
7162 static constexpr char const * const typestr{"uint16_t"};
7163 static constexpr bool traverse{false};
7164 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_major_version};
7165 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7166 using bind = Desc<SgAsmJvmFileHeader, uint16_t SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_major_version>;
7167};
7168template <> struct describe_field_t<SgAsmJvmFileHeader,uint16_t,&SgAsmJvmFileHeader::p_access_flags> {
7169 using parent = SgAsmJvmFileHeader;
7170 using field_type = uint16_t;
7171 static constexpr size_t position{2};
7172 static constexpr char const * const name{"access_flags"};
7173 static constexpr char const * const typestr{"uint16_t"};
7174 static constexpr bool traverse{false};
7175 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_access_flags};
7176 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7177 using bind = Desc<SgAsmJvmFileHeader, uint16_t SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_access_flags>;
7178};
7179template <> struct describe_field_t<SgAsmJvmFileHeader,uint16_t,&SgAsmJvmFileHeader::p_this_class> {
7180 using parent = SgAsmJvmFileHeader;
7181 using field_type = uint16_t;
7182 static constexpr size_t position{3};
7183 static constexpr char const * const name{"this_class"};
7184 static constexpr char const * const typestr{"uint16_t"};
7185 static constexpr bool traverse{false};
7186 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_this_class};
7187 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7188 using bind = Desc<SgAsmJvmFileHeader, uint16_t SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_this_class>;
7189};
7190template <> struct describe_field_t<SgAsmJvmFileHeader,uint16_t,&SgAsmJvmFileHeader::p_super_class> {
7191 using parent = SgAsmJvmFileHeader;
7192 using field_type = uint16_t;
7193 static constexpr size_t position{4};
7194 static constexpr char const * const name{"super_class"};
7195 static constexpr char const * const typestr{"uint16_t"};
7196 static constexpr bool traverse{false};
7197 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_super_class};
7198 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7199 using bind = Desc<SgAsmJvmFileHeader, uint16_t SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_super_class>;
7200};
7201template <> struct describe_field_t<SgAsmJvmFileHeader,SgAsmJvmConstantPool*,&SgAsmJvmFileHeader::p_constant_pool> {
7202 using parent = SgAsmJvmFileHeader;
7204 static constexpr size_t position{5};
7205 static constexpr char const * const name{"constant_pool"};
7206 static constexpr char const * const typestr{"SgAsmJvmConstantPool*"};
7207 static constexpr bool traverse{false};
7208 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_constant_pool};
7209 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7210 using bind = Desc<SgAsmJvmFileHeader, SgAsmJvmConstantPool* SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_constant_pool>;
7211};
7212template <> struct describe_field_t<SgAsmJvmFileHeader,std::list<uint16_t>,&SgAsmJvmFileHeader::p_interfaces> {
7213 using parent = SgAsmJvmFileHeader;
7214 using field_type = std::list<uint16_t>;
7215 static constexpr size_t position{6};
7216 static constexpr char const * const name{"interfaces"};
7217 static constexpr char const * const typestr{"std::list<uint16_t>"};
7218 static constexpr bool traverse{false};
7219 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_interfaces};
7220 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7221 using bind = Desc<SgAsmJvmFileHeader, std::list<uint16_t> SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_interfaces>;
7222};
7223template <> struct describe_field_t<SgAsmJvmFileHeader,SgAsmJvmFieldTable*,&SgAsmJvmFileHeader::p_field_table> {
7224 using parent = SgAsmJvmFileHeader;
7226 static constexpr size_t position{7};
7227 static constexpr char const * const name{"field_table"};
7228 static constexpr char const * const typestr{"SgAsmJvmFieldTable*"};
7229 static constexpr bool traverse{false};
7230 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_field_table};
7231 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7232 using bind = Desc<SgAsmJvmFileHeader, SgAsmJvmFieldTable* SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_field_table>;
7233};
7234template <> struct describe_field_t<SgAsmJvmFileHeader,SgAsmJvmMethodTable*,&SgAsmJvmFileHeader::p_method_table> {
7235 using parent = SgAsmJvmFileHeader;
7237 static constexpr size_t position{8};
7238 static constexpr char const * const name{"method_table"};
7239 static constexpr char const * const typestr{"SgAsmJvmMethodTable*"};
7240 static constexpr bool traverse{false};
7241 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_method_table};
7242 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7243 using bind = Desc<SgAsmJvmFileHeader, SgAsmJvmMethodTable* SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_method_table>;
7244};
7245template <> struct describe_field_t<SgAsmJvmFileHeader,SgAsmJvmAttributeTable*,&SgAsmJvmFileHeader::p_attribute_table> {
7246 using parent = SgAsmJvmFileHeader;
7248 static constexpr size_t position{9};
7249 static constexpr char const * const name{"attribute_table"};
7250 static constexpr char const * const typestr{"SgAsmJvmAttributeTable*"};
7251 static constexpr bool traverse{false};
7252 static constexpr auto mbr_ptr{&SgAsmJvmFileHeader::p_attribute_table};
7253 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7254 using bind = Desc<SgAsmJvmFileHeader, SgAsmJvmAttributeTable* SgAsmJvmFileHeader::*, &SgAsmJvmFileHeader::p_attribute_table>;
7255};
7265template <> struct node_from_variant_t<220> { using type = SgAsmJvmFileHeader; };
7266
7267// Class: AsmJvmNode
7277template <> struct node_from_variant_t<221> { using type = SgAsmJvmNode; };
7278
7279// Class: AsmJvmSignature
7280template <> struct describe_field_t<SgAsmJvmSignature,uint16_t,&SgAsmJvmSignature::p_signature_index> {
7281 using parent = SgAsmJvmSignature;
7282 using field_type = uint16_t;
7283 static constexpr size_t position{0};
7284 static constexpr char const * const name{"signature_index"};
7285 static constexpr char const * const typestr{"uint16_t"};
7286 static constexpr bool traverse{false};
7287 static constexpr auto mbr_ptr{&SgAsmJvmSignature::p_signature_index};
7288 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7289 using bind = Desc<SgAsmJvmSignature, uint16_t SgAsmJvmSignature::*, &SgAsmJvmSignature::p_signature_index>;
7290};
7292 using node = SgAsmJvmSignature;
7293 using base = SgAsmJvmAttribute;
7294 static constexpr char const * const name{"AsmJvmSignature"};
7295 static constexpr unsigned long variant{222};
7296 static constexpr bool concrete{true};
7297 using subclasses_t = mp::List<>;
7299};
7300template <> struct node_from_variant_t<222> { using type = SgAsmJvmSignature; };
7301
7302// Class: AsmJvmSourceFile
7303template <> struct describe_field_t<SgAsmJvmSourceFile,uint16_t,&SgAsmJvmSourceFile::p_sourcefile_index> {
7304 using parent = SgAsmJvmSourceFile;
7305 using field_type = uint16_t;
7306 static constexpr size_t position{0};
7307 static constexpr char const * const name{"sourcefile_index"};
7308 static constexpr char const * const typestr{"uint16_t"};
7309 static constexpr bool traverse{false};
7310 static constexpr auto mbr_ptr{&SgAsmJvmSourceFile::p_sourcefile_index};
7311 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7312 using bind = Desc<SgAsmJvmSourceFile, uint16_t SgAsmJvmSourceFile::*, &SgAsmJvmSourceFile::p_sourcefile_index>;
7313};
7315 using node = SgAsmJvmSourceFile;
7316 using base = SgAsmJvmAttribute;
7317 static constexpr char const * const name{"AsmJvmSourceFile"};
7318 static constexpr unsigned long variant{223};
7319 static constexpr bool concrete{true};
7320 using subclasses_t = mp::List<>;
7322};
7323template <> struct node_from_variant_t<223> { using type = SgAsmJvmSourceFile; };
7324
7325// Class: AsmLEEntryPoint
7326template <> struct describe_field_t<SgAsmLEEntryPoint,SgAsmLEEntryPointPtrList,&SgAsmLEEntryPoint::p_entries> {
7327 using parent = SgAsmLEEntryPoint;
7328 using field_type = SgAsmLEEntryPointPtrList;
7329 static constexpr size_t position{0};
7330 static constexpr char const * const name{"entries"};
7331 static constexpr char const * const typestr{"SgAsmLEEntryPointPtrList"};
7332 static constexpr bool traverse{true};
7333 static constexpr auto mbr_ptr{&SgAsmLEEntryPoint::p_entries};
7334 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7335 using bind = Desc<SgAsmLEEntryPoint, SgAsmLEEntryPointPtrList SgAsmLEEntryPoint::*, &SgAsmLEEntryPoint::p_entries>;
7336};
7337template <> struct describe_field_t<SgAsmLEEntryPoint,unsigned,&SgAsmLEEntryPoint::p_flags> {
7338 using parent = SgAsmLEEntryPoint;
7339 using field_type = unsigned;
7340 static constexpr size_t position{1};
7341 static constexpr char const * const name{"flags"};
7342 static constexpr char const * const typestr{"unsigned"};
7343 static constexpr bool traverse{false};
7344 static constexpr auto mbr_ptr{&SgAsmLEEntryPoint::p_flags};
7345 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7346 using bind = Desc<SgAsmLEEntryPoint, unsigned SgAsmLEEntryPoint::*, &SgAsmLEEntryPoint::p_flags>;
7347};
7348template <> struct describe_field_t<SgAsmLEEntryPoint,unsigned,&SgAsmLEEntryPoint::p_objnum> {
7349 using parent = SgAsmLEEntryPoint;
7350 using field_type = unsigned;
7351 static constexpr size_t position{2};
7352 static constexpr char const * const name{"objnum"};
7353 static constexpr char const * const typestr{"unsigned"};
7354 static constexpr bool traverse{false};
7355 static constexpr auto mbr_ptr{&SgAsmLEEntryPoint::p_objnum};
7356 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7357 using bind = Desc<SgAsmLEEntryPoint, unsigned SgAsmLEEntryPoint::*, &SgAsmLEEntryPoint::p_objnum>;
7358};
7359template <> struct describe_field_t<SgAsmLEEntryPoint,unsigned,&SgAsmLEEntryPoint::p_entry_type> {
7360 using parent = SgAsmLEEntryPoint;
7361 using field_type = unsigned;
7362 static constexpr size_t position{3};
7363 static constexpr char const * const name{"entry_type"};
7364 static constexpr char const * const typestr{"unsigned"};
7365 static constexpr bool traverse{false};
7366 static constexpr auto mbr_ptr{&SgAsmLEEntryPoint::p_entry_type};
7367 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7368 using bind = Desc<SgAsmLEEntryPoint, unsigned SgAsmLEEntryPoint::*, &SgAsmLEEntryPoint::p_entry_type>;
7369};
7370template <> struct describe_field_t<SgAsmLEEntryPoint,unsigned,&SgAsmLEEntryPoint::p_res1> {
7371 using parent = SgAsmLEEntryPoint;
7372 using field_type = unsigned;
7373 static constexpr size_t position{4};
7374 static constexpr char const * const name{"res1"};
7375 static constexpr char const * const typestr{"unsigned"};
7376 static constexpr bool traverse{false};
7377 static constexpr auto mbr_ptr{&SgAsmLEEntryPoint::p_res1};
7378 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7379 using bind = Desc<SgAsmLEEntryPoint, unsigned SgAsmLEEntryPoint::*, &SgAsmLEEntryPoint::p_res1>;
7380};
7381template <> struct describe_field_t<SgAsmLEEntryPoint,rose_addr_t,&SgAsmLEEntryPoint::p_entry_offset> {
7382 using parent = SgAsmLEEntryPoint;
7383 using field_type = rose_addr_t;
7384 static constexpr size_t position{5};
7385 static constexpr char const * const name{"entry_offset"};
7386 static constexpr char const * const typestr{"rose_addr_t"};
7387 static constexpr bool traverse{false};
7388 static constexpr auto mbr_ptr{&SgAsmLEEntryPoint::p_entry_offset};
7389 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7390 using bind = Desc<SgAsmLEEntryPoint, rose_addr_t SgAsmLEEntryPoint::*, &SgAsmLEEntryPoint::p_entry_offset>;
7391};
7401template <> struct node_from_variant_t<224> { using type = SgAsmLEEntryPoint; };
7402
7403// Class: AsmLEEntryTable
7404template <> struct describe_field_t<SgAsmLEEntryTable,SgSizeTList,&SgAsmLEEntryTable::p_bundle_sizes> {
7405 using parent = SgAsmLEEntryTable;
7406 using field_type = SgSizeTList;
7407 static constexpr size_t position{0};
7408 static constexpr char const * const name{"bundle_sizes"};
7409 static constexpr char const * const typestr{"SgSizeTList"};
7410 static constexpr bool traverse{false};
7411 static constexpr auto mbr_ptr{&SgAsmLEEntryTable::p_bundle_sizes};
7412 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7413 using bind = Desc<SgAsmLEEntryTable, SgSizeTList SgAsmLEEntryTable::*, &SgAsmLEEntryTable::p_bundle_sizes>;
7414};
7415template <> struct describe_field_t<SgAsmLEEntryTable,SgAsmLEEntryPointPtrList,&SgAsmLEEntryTable::p_entries> {
7416 using parent = SgAsmLEEntryTable;
7417 using field_type = SgAsmLEEntryPointPtrList;
7418 static constexpr size_t position{1};
7419 static constexpr char const * const name{"entries"};
7420 static constexpr char const * const typestr{"SgAsmLEEntryPointPtrList"};
7421 static constexpr bool traverse{true};
7422 static constexpr auto mbr_ptr{&SgAsmLEEntryTable::p_entries};
7423 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7424 using bind = Desc<SgAsmLEEntryTable, SgAsmLEEntryPointPtrList SgAsmLEEntryTable::*, &SgAsmLEEntryTable::p_entries>;
7425};
7427 using node = SgAsmLEEntryTable;
7428 using base = SgAsmGenericSection;
7429 static constexpr char const * const name{"AsmLEEntryTable"};
7430 static constexpr unsigned long variant{225};
7431 static constexpr bool concrete{true};
7432 using subclasses_t = mp::List<>;
7434};
7435template <> struct node_from_variant_t<225> { using type = SgAsmLEEntryTable; };
7436
7437// Class: AsmLEFileHeader
7438template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_byte_order> {
7439 using parent = SgAsmLEFileHeader;
7440 using field_type = unsigned;
7441 static constexpr size_t position{0};
7442 static constexpr char const * const name{"e_byte_order"};
7443 static constexpr char const * const typestr{"unsigned"};
7444 static constexpr bool traverse{false};
7445 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_byte_order};
7446 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7447 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_byte_order>;
7448};
7449template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_word_order> {
7450 using parent = SgAsmLEFileHeader;
7451 using field_type = unsigned;
7452 static constexpr size_t position{1};
7453 static constexpr char const * const name{"e_word_order"};
7454 static constexpr char const * const typestr{"unsigned"};
7455 static constexpr bool traverse{false};
7456 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_word_order};
7457 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7458 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_word_order>;
7459};
7460template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_format_level> {
7461 using parent = SgAsmLEFileHeader;
7462 using field_type = unsigned;
7463 static constexpr size_t position{2};
7464 static constexpr char const * const name{"e_format_level"};
7465 static constexpr char const * const typestr{"unsigned"};
7466 static constexpr bool traverse{false};
7467 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_format_level};
7468 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7469 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_format_level>;
7470};
7471template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_cpu_type> {
7472 using parent = SgAsmLEFileHeader;
7473 using field_type = unsigned;
7474 static constexpr size_t position{3};
7475 static constexpr char const * const name{"e_cpu_type"};
7476 static constexpr char const * const typestr{"unsigned"};
7477 static constexpr bool traverse{false};
7478 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_cpu_type};
7479 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7480 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_cpu_type>;
7481};
7482template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_os_type> {
7483 using parent = SgAsmLEFileHeader;
7484 using field_type = unsigned;
7485 static constexpr size_t position{4};
7486 static constexpr char const * const name{"e_os_type"};
7487 static constexpr char const * const typestr{"unsigned"};
7488 static constexpr bool traverse{false};
7489 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_os_type};
7490 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7491 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_os_type>;
7492};
7493template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_module_version> {
7494 using parent = SgAsmLEFileHeader;
7495 using field_type = unsigned;
7496 static constexpr size_t position{5};
7497 static constexpr char const * const name{"e_module_version"};
7498 static constexpr char const * const typestr{"unsigned"};
7499 static constexpr bool traverse{false};
7500 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_module_version};
7501 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7502 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_module_version>;
7503};
7504template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_flags> {
7505 using parent = SgAsmLEFileHeader;
7506 using field_type = unsigned;
7507 static constexpr size_t position{6};
7508 static constexpr char const * const name{"e_flags"};
7509 static constexpr char const * const typestr{"unsigned"};
7510 static constexpr bool traverse{false};
7511 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_flags};
7512 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7513 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_flags>;
7514};
7515template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_eip_section> {
7516 using parent = SgAsmLEFileHeader;
7517 using field_type = unsigned;
7518 static constexpr size_t position{7};
7519 static constexpr char const * const name{"e_eip_section"};
7520 static constexpr char const * const typestr{"unsigned"};
7521 static constexpr bool traverse{false};
7522 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_eip_section};
7523 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7524 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_eip_section>;
7525};
7526template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_esp_section> {
7527 using parent = SgAsmLEFileHeader;
7528 using field_type = unsigned;
7529 static constexpr size_t position{8};
7530 static constexpr char const * const name{"e_esp_section"};
7531 static constexpr char const * const typestr{"unsigned"};
7532 static constexpr bool traverse{false};
7533 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_esp_section};
7534 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7535 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_esp_section>;
7536};
7537template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_last_page_size> {
7538 using parent = SgAsmLEFileHeader;
7539 using field_type = unsigned;
7540 static constexpr size_t position{9};
7541 static constexpr char const * const name{"e_last_page_size"};
7542 static constexpr char const * const typestr{"unsigned"};
7543 static constexpr bool traverse{false};
7544 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_last_page_size};
7545 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7546 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_last_page_size>;
7547};
7548template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_page_offset_shift> {
7549 using parent = SgAsmLEFileHeader;
7550 using field_type = unsigned;
7551 static constexpr size_t position{10};
7552 static constexpr char const * const name{"e_page_offset_shift"};
7553 static constexpr char const * const typestr{"unsigned"};
7554 static constexpr bool traverse{false};
7555 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_page_offset_shift};
7556 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7557 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_page_offset_shift>;
7558};
7559template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_fixup_sect_cksum> {
7560 using parent = SgAsmLEFileHeader;
7561 using field_type = unsigned;
7562 static constexpr size_t position{11};
7563 static constexpr char const * const name{"e_fixup_sect_cksum"};
7564 static constexpr char const * const typestr{"unsigned"};
7565 static constexpr bool traverse{false};
7566 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_fixup_sect_cksum};
7567 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7568 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_fixup_sect_cksum>;
7569};
7570template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_loader_sect_cksum> {
7571 using parent = SgAsmLEFileHeader;
7572 using field_type = unsigned;
7573 static constexpr size_t position{12};
7574 static constexpr char const * const name{"e_loader_sect_cksum"};
7575 static constexpr char const * const typestr{"unsigned"};
7576 static constexpr bool traverse{false};
7577 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_loader_sect_cksum};
7578 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7579 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_loader_sect_cksum>;
7580};
7581template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_secttab_nentries> {
7582 using parent = SgAsmLEFileHeader;
7583 using field_type = unsigned;
7584 static constexpr size_t position{13};
7585 static constexpr char const * const name{"e_secttab_nentries"};
7586 static constexpr char const * const typestr{"unsigned"};
7587 static constexpr bool traverse{false};
7588 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_secttab_nentries};
7589 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7590 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_secttab_nentries>;
7591};
7592template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_rsrctab_nentries> {
7593 using parent = SgAsmLEFileHeader;
7594 using field_type = unsigned;
7595 static constexpr size_t position{14};
7596 static constexpr char const * const name{"e_rsrctab_nentries"};
7597 static constexpr char const * const typestr{"unsigned"};
7598 static constexpr bool traverse{false};
7599 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_rsrctab_nentries};
7600 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7601 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_rsrctab_nentries>;
7602};
7603template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_fmtdirtab_nentries> {
7604 using parent = SgAsmLEFileHeader;
7605 using field_type = unsigned;
7606 static constexpr size_t position{15};
7607 static constexpr char const * const name{"e_fmtdirtab_nentries"};
7608 static constexpr char const * const typestr{"unsigned"};
7609 static constexpr bool traverse{false};
7610 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_fmtdirtab_nentries};
7611 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7612 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_fmtdirtab_nentries>;
7613};
7614template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_import_modtab_nentries> {
7615 using parent = SgAsmLEFileHeader;
7616 using field_type = unsigned;
7617 static constexpr size_t position{16};
7618 static constexpr char const * const name{"e_import_modtab_nentries"};
7619 static constexpr char const * const typestr{"unsigned"};
7620 static constexpr bool traverse{false};
7621 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_import_modtab_nentries};
7622 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7623 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_import_modtab_nentries>;
7624};
7625template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_preload_npages> {
7626 using parent = SgAsmLEFileHeader;
7627 using field_type = unsigned;
7628 static constexpr size_t position{17};
7629 static constexpr char const * const name{"e_preload_npages"};
7630 static constexpr char const * const typestr{"unsigned"};
7631 static constexpr bool traverse{false};
7632 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_preload_npages};
7633 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7634 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_preload_npages>;
7635};
7636template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_nonresnametab_size> {
7637 using parent = SgAsmLEFileHeader;
7638 using field_type = unsigned;
7639 static constexpr size_t position{18};
7640 static constexpr char const * const name{"e_nonresnametab_size"};
7641 static constexpr char const * const typestr{"unsigned"};
7642 static constexpr bool traverse{false};
7643 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_nonresnametab_size};
7644 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7645 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_nonresnametab_size>;
7646};
7647template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_nonresnametab_cksum> {
7648 using parent = SgAsmLEFileHeader;
7649 using field_type = unsigned;
7650 static constexpr size_t position{19};
7651 static constexpr char const * const name{"e_nonresnametab_cksum"};
7652 static constexpr char const * const typestr{"unsigned"};
7653 static constexpr bool traverse{false};
7654 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_nonresnametab_cksum};
7655 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7656 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_nonresnametab_cksum>;
7657};
7658template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_auto_ds_section> {
7659 using parent = SgAsmLEFileHeader;
7660 using field_type = unsigned;
7661 static constexpr size_t position{20};
7662 static constexpr char const * const name{"e_auto_ds_section"};
7663 static constexpr char const * const typestr{"unsigned"};
7664 static constexpr bool traverse{false};
7665 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_auto_ds_section};
7666 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7667 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_auto_ds_section>;
7668};
7669template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_debug_info_size> {
7670 using parent = SgAsmLEFileHeader;
7671 using field_type = unsigned;
7672 static constexpr size_t position{21};
7673 static constexpr char const * const name{"e_debug_info_size"};
7674 static constexpr char const * const typestr{"unsigned"};
7675 static constexpr bool traverse{false};
7676 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_debug_info_size};
7677 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7678 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_debug_info_size>;
7679};
7680template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_num_instance_preload> {
7681 using parent = SgAsmLEFileHeader;
7682 using field_type = unsigned;
7683 static constexpr size_t position{22};
7684 static constexpr char const * const name{"e_num_instance_preload"};
7685 static constexpr char const * const typestr{"unsigned"};
7686 static constexpr bool traverse{false};
7687 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_num_instance_preload};
7688 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7689 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_num_instance_preload>;
7690};
7691template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_num_instance_demand> {
7692 using parent = SgAsmLEFileHeader;
7693 using field_type = unsigned;
7694 static constexpr size_t position{23};
7695 static constexpr char const * const name{"e_num_instance_demand"};
7696 static constexpr char const * const typestr{"unsigned"};
7697 static constexpr bool traverse{false};
7698 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_num_instance_demand};
7699 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7700 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_num_instance_demand>;
7701};
7702template <> struct describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_heap_size> {
7703 using parent = SgAsmLEFileHeader;
7704 using field_type = unsigned;
7705 static constexpr size_t position{24};
7706 static constexpr char const * const name{"e_heap_size"};
7707 static constexpr char const * const typestr{"unsigned"};
7708 static constexpr bool traverse{false};
7709 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_heap_size};
7710 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7711 using bind = Desc<SgAsmLEFileHeader, unsigned SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_heap_size>;
7712};
7713template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_npages> {
7714 using parent = SgAsmLEFileHeader;
7715 using field_type = rose_addr_t;
7716 static constexpr size_t position{25};
7717 static constexpr char const * const name{"e_npages"};
7718 static constexpr char const * const typestr{"rose_addr_t"};
7719 static constexpr bool traverse{false};
7720 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_npages};
7721 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7722 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_npages>;
7723};
7724template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_eip> {
7725 using parent = SgAsmLEFileHeader;
7726 using field_type = rose_addr_t;
7727 static constexpr size_t position{26};
7728 static constexpr char const * const name{"e_eip"};
7729 static constexpr char const * const typestr{"rose_addr_t"};
7730 static constexpr bool traverse{false};
7731 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_eip};
7732 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7733 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_eip>;
7734};
7735template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_esp> {
7736 using parent = SgAsmLEFileHeader;
7737 using field_type = rose_addr_t;
7738 static constexpr size_t position{27};
7739 static constexpr char const * const name{"e_esp"};
7740 static constexpr char const * const typestr{"rose_addr_t"};
7741 static constexpr bool traverse{false};
7742 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_esp};
7743 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7744 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_esp>;
7745};
7746template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_page_size> {
7747 using parent = SgAsmLEFileHeader;
7748 using field_type = rose_addr_t;
7749 static constexpr size_t position{28};
7750 static constexpr char const * const name{"e_page_size"};
7751 static constexpr char const * const typestr{"rose_addr_t"};
7752 static constexpr bool traverse{false};
7753 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_page_size};
7754 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7755 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_page_size>;
7756};
7757template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fixup_sect_size> {
7758 using parent = SgAsmLEFileHeader;
7759 using field_type = rose_addr_t;
7760 static constexpr size_t position{29};
7761 static constexpr char const * const name{"e_fixup_sect_size"};
7762 static constexpr char const * const typestr{"rose_addr_t"};
7763 static constexpr bool traverse{false};
7764 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_fixup_sect_size};
7765 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7766 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_fixup_sect_size>;
7767};
7768template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_loader_sect_size> {
7769 using parent = SgAsmLEFileHeader;
7770 using field_type = rose_addr_t;
7771 static constexpr size_t position{30};
7772 static constexpr char const * const name{"e_loader_sect_size"};
7773 static constexpr char const * const typestr{"rose_addr_t"};
7774 static constexpr bool traverse{false};
7775 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_loader_sect_size};
7776 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7777 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_loader_sect_size>;
7778};
7779template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_secttab_rfo> {
7780 using parent = SgAsmLEFileHeader;
7781 using field_type = rose_addr_t;
7782 static constexpr size_t position{31};
7783 static constexpr char const * const name{"e_secttab_rfo"};
7784 static constexpr char const * const typestr{"rose_addr_t"};
7785 static constexpr bool traverse{false};
7786 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_secttab_rfo};
7787 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7788 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_secttab_rfo>;
7789};
7790template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_pagetab_rfo> {
7791 using parent = SgAsmLEFileHeader;
7792 using field_type = rose_addr_t;
7793 static constexpr size_t position{32};
7794 static constexpr char const * const name{"e_pagetab_rfo"};
7795 static constexpr char const * const typestr{"rose_addr_t"};
7796 static constexpr bool traverse{false};
7797 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_pagetab_rfo};
7798 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7799 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_pagetab_rfo>;
7800};
7801template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_iterpages_offset> {
7802 using parent = SgAsmLEFileHeader;
7803 using field_type = rose_addr_t;
7804 static constexpr size_t position{33};
7805 static constexpr char const * const name{"e_iterpages_offset"};
7806 static constexpr char const * const typestr{"rose_addr_t"};
7807 static constexpr bool traverse{false};
7808 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_iterpages_offset};
7809 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7810 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_iterpages_offset>;
7811};
7812template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_rsrctab_rfo> {
7813 using parent = SgAsmLEFileHeader;
7814 using field_type = rose_addr_t;
7815 static constexpr size_t position{34};
7816 static constexpr char const * const name{"e_rsrctab_rfo"};
7817 static constexpr char const * const typestr{"rose_addr_t"};
7818 static constexpr bool traverse{false};
7819 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_rsrctab_rfo};
7820 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7821 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_rsrctab_rfo>;
7822};
7823template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_resnametab_rfo> {
7824 using parent = SgAsmLEFileHeader;
7825 using field_type = rose_addr_t;
7826 static constexpr size_t position{35};
7827 static constexpr char const * const name{"e_resnametab_rfo"};
7828 static constexpr char const * const typestr{"rose_addr_t"};
7829 static constexpr bool traverse{false};
7830 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_resnametab_rfo};
7831 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7832 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_resnametab_rfo>;
7833};
7834template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_entrytab_rfo> {
7835 using parent = SgAsmLEFileHeader;
7836 using field_type = rose_addr_t;
7837 static constexpr size_t position{36};
7838 static constexpr char const * const name{"e_entrytab_rfo"};
7839 static constexpr char const * const typestr{"rose_addr_t"};
7840 static constexpr bool traverse{false};
7841 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_entrytab_rfo};
7842 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7843 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_entrytab_rfo>;
7844};
7845template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fmtdirtab_rfo> {
7846 using parent = SgAsmLEFileHeader;
7847 using field_type = rose_addr_t;
7848 static constexpr size_t position{37};
7849 static constexpr char const * const name{"e_fmtdirtab_rfo"};
7850 static constexpr char const * const typestr{"rose_addr_t"};
7851 static constexpr bool traverse{false};
7852 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_fmtdirtab_rfo};
7853 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7854 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_fmtdirtab_rfo>;
7855};
7856template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fixup_pagetab_rfo> {
7857 using parent = SgAsmLEFileHeader;
7858 using field_type = rose_addr_t;
7859 static constexpr size_t position{38};
7860 static constexpr char const * const name{"e_fixup_pagetab_rfo"};
7861 static constexpr char const * const typestr{"rose_addr_t"};
7862 static constexpr bool traverse{false};
7863 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_fixup_pagetab_rfo};
7864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7865 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_fixup_pagetab_rfo>;
7866};
7867template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fixup_rectab_rfo> {
7868 using parent = SgAsmLEFileHeader;
7869 using field_type = rose_addr_t;
7870 static constexpr size_t position{39};
7871 static constexpr char const * const name{"e_fixup_rectab_rfo"};
7872 static constexpr char const * const typestr{"rose_addr_t"};
7873 static constexpr bool traverse{false};
7874 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_fixup_rectab_rfo};
7875 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7876 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_fixup_rectab_rfo>;
7877};
7878template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_import_modtab_rfo> {
7879 using parent = SgAsmLEFileHeader;
7880 using field_type = rose_addr_t;
7881 static constexpr size_t position{40};
7882 static constexpr char const * const name{"e_import_modtab_rfo"};
7883 static constexpr char const * const typestr{"rose_addr_t"};
7884 static constexpr bool traverse{false};
7885 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_import_modtab_rfo};
7886 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7887 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_import_modtab_rfo>;
7888};
7889template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_import_proctab_rfo> {
7890 using parent = SgAsmLEFileHeader;
7891 using field_type = rose_addr_t;
7892 static constexpr size_t position{41};
7893 static constexpr char const * const name{"e_import_proctab_rfo"};
7894 static constexpr char const * const typestr{"rose_addr_t"};
7895 static constexpr bool traverse{false};
7896 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_import_proctab_rfo};
7897 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7898 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_import_proctab_rfo>;
7899};
7900template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_ppcksumtab_rfo> {
7901 using parent = SgAsmLEFileHeader;
7902 using field_type = rose_addr_t;
7903 static constexpr size_t position{42};
7904 static constexpr char const * const name{"e_ppcksumtab_rfo"};
7905 static constexpr char const * const typestr{"rose_addr_t"};
7906 static constexpr bool traverse{false};
7907 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_ppcksumtab_rfo};
7908 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7909 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_ppcksumtab_rfo>;
7910};
7911template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_data_pages_offset> {
7912 using parent = SgAsmLEFileHeader;
7913 using field_type = rose_addr_t;
7914 static constexpr size_t position{43};
7915 static constexpr char const * const name{"e_data_pages_offset"};
7916 static constexpr char const * const typestr{"rose_addr_t"};
7917 static constexpr bool traverse{false};
7918 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_data_pages_offset};
7919 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7920 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_data_pages_offset>;
7921};
7922template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_nonresnametab_offset> {
7923 using parent = SgAsmLEFileHeader;
7924 using field_type = rose_addr_t;
7925 static constexpr size_t position{44};
7926 static constexpr char const * const name{"e_nonresnametab_offset"};
7927 static constexpr char const * const typestr{"rose_addr_t"};
7928 static constexpr bool traverse{false};
7929 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_nonresnametab_offset};
7930 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7931 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_nonresnametab_offset>;
7932};
7933template <> struct describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_debug_info_rfo> {
7934 using parent = SgAsmLEFileHeader;
7935 using field_type = rose_addr_t;
7936 static constexpr size_t position{45};
7937 static constexpr char const * const name{"e_debug_info_rfo"};
7938 static constexpr char const * const typestr{"rose_addr_t"};
7939 static constexpr bool traverse{false};
7940 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_e_debug_info_rfo};
7941 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7942 using bind = Desc<SgAsmLEFileHeader, rose_addr_t SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_e_debug_info_rfo>;
7943};
7944template <> struct describe_field_t<SgAsmLEFileHeader,SgAsmDOSExtendedHeader*,&SgAsmLEFileHeader::p_dos2Header> {
7945 using parent = SgAsmLEFileHeader;
7947 static constexpr size_t position{46};
7948 static constexpr char const * const name{"dos2Header"};
7949 static constexpr char const * const typestr{"SgAsmDOSExtendedHeader*"};
7950 static constexpr bool traverse{true};
7951 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_dos2Header};
7952 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7953 using bind = Desc<SgAsmLEFileHeader, SgAsmDOSExtendedHeader* SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_dos2Header>;
7954};
7955template <> struct describe_field_t<SgAsmLEFileHeader,SgAsmLESectionTable*,&SgAsmLEFileHeader::p_sectionTable> {
7956 using parent = SgAsmLEFileHeader;
7958 static constexpr size_t position{47};
7959 static constexpr char const * const name{"sectionTable"};
7960 static constexpr char const * const typestr{"SgAsmLESectionTable*"};
7961 static constexpr bool traverse{false};
7962 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_sectionTable};
7963 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7964 using bind = Desc<SgAsmLEFileHeader, SgAsmLESectionTable* SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_sectionTable>;
7965};
7966template <> struct describe_field_t<SgAsmLEFileHeader,SgAsmLEPageTable*,&SgAsmLEFileHeader::p_pageTable> {
7967 using parent = SgAsmLEFileHeader;
7969 static constexpr size_t position{48};
7970 static constexpr char const * const name{"pageTable"};
7971 static constexpr char const * const typestr{"SgAsmLEPageTable*"};
7972 static constexpr bool traverse{true};
7973 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_pageTable};
7974 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7975 using bind = Desc<SgAsmLEFileHeader, SgAsmLEPageTable* SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_pageTable>;
7976};
7977template <> struct describe_field_t<SgAsmLEFileHeader,SgAsmLENameTable*,&SgAsmLEFileHeader::p_residentNameTable> {
7978 using parent = SgAsmLEFileHeader;
7980 static constexpr size_t position{49};
7981 static constexpr char const * const name{"residentNameTable"};
7982 static constexpr char const * const typestr{"SgAsmLENameTable*"};
7983 static constexpr bool traverse{true};
7984 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_residentNameTable};
7985 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7986 using bind = Desc<SgAsmLEFileHeader, SgAsmLENameTable* SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_residentNameTable>;
7987};
7988template <> struct describe_field_t<SgAsmLEFileHeader,SgAsmLENameTable*,&SgAsmLEFileHeader::p_nonresidentNameTable> {
7989 using parent = SgAsmLEFileHeader;
7991 static constexpr size_t position{50};
7992 static constexpr char const * const name{"nonresidentNameTable"};
7993 static constexpr char const * const typestr{"SgAsmLENameTable*"};
7994 static constexpr bool traverse{true};
7995 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_nonresidentNameTable};
7996 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
7997 using bind = Desc<SgAsmLEFileHeader, SgAsmLENameTable* SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_nonresidentNameTable>;
7998};
7999template <> struct describe_field_t<SgAsmLEFileHeader,SgAsmLEEntryTable*,&SgAsmLEFileHeader::p_entryTable> {
8000 using parent = SgAsmLEFileHeader;
8002 static constexpr size_t position{51};
8003 static constexpr char const * const name{"entryTable"};
8004 static constexpr char const * const typestr{"SgAsmLEEntryTable*"};
8005 static constexpr bool traverse{true};
8006 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_entryTable};
8007 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8008 using bind = Desc<SgAsmLEFileHeader, SgAsmLEEntryTable* SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_entryTable>;
8009};
8010template <> struct describe_field_t<SgAsmLEFileHeader,SgAsmLERelocTable*,&SgAsmLEFileHeader::p_relocationTable> {
8011 using parent = SgAsmLEFileHeader;
8013 static constexpr size_t position{52};
8014 static constexpr char const * const name{"relocationTable"};
8015 static constexpr char const * const typestr{"SgAsmLERelocTable*"};
8016 static constexpr bool traverse{true};
8017 static constexpr auto mbr_ptr{&SgAsmLEFileHeader::p_relocationTable};
8018 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8019 using bind = Desc<SgAsmLEFileHeader, SgAsmLERelocTable* SgAsmLEFileHeader::*, &SgAsmLEFileHeader::p_relocationTable>;
8020};
8022 using node = SgAsmLEFileHeader;
8023 using base = SgAsmGenericHeader;
8024 static constexpr char const * const name{"AsmLEFileHeader"};
8025 static constexpr unsigned long variant{226};
8026 static constexpr bool concrete{true};
8027 using subclasses_t = mp::List<>;
8028 using fields_t = mp::List<describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_byte_order>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_word_order>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_format_level>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_cpu_type>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_os_type>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_module_version>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_flags>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_eip_section>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_esp_section>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_last_page_size>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_page_offset_shift>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_fixup_sect_cksum>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_loader_sect_cksum>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_secttab_nentries>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_rsrctab_nentries>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_fmtdirtab_nentries>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_import_modtab_nentries>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_preload_npages>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_nonresnametab_size>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_nonresnametab_cksum>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_auto_ds_section>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_debug_info_size>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_num_instance_preload>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_num_instance_demand>, describe_field_t<SgAsmLEFileHeader,unsigned,&SgAsmLEFileHeader::p_e_heap_size>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_npages>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_eip>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_esp>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_page_size>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fixup_sect_size>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_loader_sect_size>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_secttab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_pagetab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_iterpages_offset>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_rsrctab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_resnametab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_entrytab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fmtdirtab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fixup_pagetab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_fixup_rectab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_import_modtab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_import_proctab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_ppcksumtab_rfo>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_data_pages_offset>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_nonresnametab_offset>, describe_field_t<SgAsmLEFileHeader,rose_addr_t,&SgAsmLEFileHeader::p_e_debug_info_rfo>, describe_field_t<SgAsmLEFileHeader,SgAsmDOSExtendedHeader*,&SgAsmLEFileHeader::p_dos2Header>, describe_field_t<SgAsmLEFileHeader,SgAsmLESectionTable*,&SgAsmLEFileHeader::p_sectionTable>, describe_field_t<SgAsmLEFileHeader,SgAsmLEPageTable*,&SgAsmLEFileHeader::p_pageTable>, describe_field_t<SgAsmLEFileHeader,SgAsmLENameTable*,&SgAsmLEFileHeader::p_residentNameTable>, describe_field_t<SgAsmLEFileHeader,SgAsmLENameTable*,&SgAsmLEFileHeader::p_nonresidentNameTable>, describe_field_t<SgAsmLEFileHeader,SgAsmLEEntryTable*,&SgAsmLEFileHeader::p_entryTable>, describe_field_t<SgAsmLEFileHeader,SgAsmLERelocTable*,&SgAsmLEFileHeader::p_relocationTable>>;
8029};
8030template <> struct node_from_variant_t<226> { using type = SgAsmLEFileHeader; };
8031
8032// Class: AsmLENameTable
8033template <> struct describe_field_t<SgAsmLENameTable,SgStringList,&SgAsmLENameTable::p_names> {
8034 using parent = SgAsmLENameTable;
8035 using field_type = SgStringList;
8036 static constexpr size_t position{0};
8037 static constexpr char const * const name{"names"};
8038 static constexpr char const * const typestr{"SgStringList"};
8039 static constexpr bool traverse{false};
8040 static constexpr auto mbr_ptr{&SgAsmLENameTable::p_names};
8041 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8042 using bind = Desc<SgAsmLENameTable, SgStringList SgAsmLENameTable::*, &SgAsmLENameTable::p_names>;
8043};
8044template <> struct describe_field_t<SgAsmLENameTable,SgUnsignedList,&SgAsmLENameTable::p_ordinals> {
8045 using parent = SgAsmLENameTable;
8046 using field_type = SgUnsignedList;
8047 static constexpr size_t position{1};
8048 static constexpr char const * const name{"ordinals"};
8049 static constexpr char const * const typestr{"SgUnsignedList"};
8050 static constexpr bool traverse{false};
8051 static constexpr auto mbr_ptr{&SgAsmLENameTable::p_ordinals};
8052 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8053 using bind = Desc<SgAsmLENameTable, SgUnsignedList SgAsmLENameTable::*, &SgAsmLENameTable::p_ordinals>;
8054};
8056 using node = SgAsmLENameTable;
8057 using base = SgAsmGenericSection;
8058 static constexpr char const * const name{"AsmLENameTable"};
8059 static constexpr unsigned long variant{227};
8060 static constexpr bool concrete{true};
8061 using subclasses_t = mp::List<>;
8063};
8064template <> struct node_from_variant_t<227> { using type = SgAsmLENameTable; };
8065
8066// Class: AsmLEPageTable
8067template <> struct describe_field_t<SgAsmLEPageTable,SgAsmLEPageTableEntryPtrList,&SgAsmLEPageTable::p_entries> {
8068 using parent = SgAsmLEPageTable;
8069 using field_type = SgAsmLEPageTableEntryPtrList;
8070 static constexpr size_t position{0};
8071 static constexpr char const * const name{"entries"};
8072 static constexpr char const * const typestr{"SgAsmLEPageTableEntryPtrList"};
8073 static constexpr bool traverse{true};
8074 static constexpr auto mbr_ptr{&SgAsmLEPageTable::p_entries};
8075 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8076 using bind = Desc<SgAsmLEPageTable, SgAsmLEPageTableEntryPtrList SgAsmLEPageTable::*, &SgAsmLEPageTable::p_entries>;
8077};
8079 using node = SgAsmLEPageTable;
8080 using base = SgAsmGenericSection;
8081 static constexpr char const * const name{"AsmLEPageTable"};
8082 static constexpr unsigned long variant{228};
8083 static constexpr bool concrete{true};
8084 using subclasses_t = mp::List<>;
8086};
8087template <> struct node_from_variant_t<228> { using type = SgAsmLEPageTable; };
8088
8089// Class: AsmLEPageTableEntry
8090template <> struct describe_field_t<SgAsmLEPageTableEntry,unsigned,&SgAsmLEPageTableEntry::p_pageno> {
8092 using field_type = unsigned;
8093 static constexpr size_t position{0};
8094 static constexpr char const * const name{"pageno"};
8095 static constexpr char const * const typestr{"unsigned"};
8096 static constexpr bool traverse{false};
8097 static constexpr auto mbr_ptr{&SgAsmLEPageTableEntry::p_pageno};
8098 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8099 using bind = Desc<SgAsmLEPageTableEntry, unsigned SgAsmLEPageTableEntry::*, &SgAsmLEPageTableEntry::p_pageno>;
8100};
8101template <> struct describe_field_t<SgAsmLEPageTableEntry,unsigned,&SgAsmLEPageTableEntry::p_flags> {
8103 using field_type = unsigned;
8104 static constexpr size_t position{1};
8105 static constexpr char const * const name{"flags"};
8106 static constexpr char const * const typestr{"unsigned"};
8107 static constexpr bool traverse{false};
8108 static constexpr auto mbr_ptr{&SgAsmLEPageTableEntry::p_flags};
8109 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8110 using bind = Desc<SgAsmLEPageTableEntry, unsigned SgAsmLEPageTableEntry::*, &SgAsmLEPageTableEntry::p_flags>;
8111};
8115 static constexpr char const * const name{"AsmLEPageTableEntry"};
8116 static constexpr unsigned long variant{229};
8117 static constexpr bool concrete{true};
8118 using subclasses_t = mp::List<>;
8120};
8121template <> struct node_from_variant_t<229> { using type = SgAsmLEPageTableEntry; };
8122
8123// Class: AsmLERelocTable
8124template <> struct describe_field_t<SgAsmLERelocTable,SgAsmLERelocEntryPtrList,&SgAsmLERelocTable::p_entries> {
8125 using parent = SgAsmLERelocTable;
8126 using field_type = SgAsmLERelocEntryPtrList;
8127 static constexpr size_t position{0};
8128 static constexpr char const * const name{"entries"};
8129 static constexpr char const * const typestr{"SgAsmLERelocEntryPtrList"};
8130 static constexpr bool traverse{true};
8131 static constexpr auto mbr_ptr{&SgAsmLERelocTable::p_entries};
8132 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8133 using bind = Desc<SgAsmLERelocTable, SgAsmLERelocEntryPtrList SgAsmLERelocTable::*, &SgAsmLERelocTable::p_entries>;
8134};
8136 using node = SgAsmLERelocTable;
8137 using base = SgAsmGenericSection;
8138 static constexpr char const * const name{"AsmLERelocTable"};
8139 static constexpr unsigned long variant{230};
8140 static constexpr bool concrete{true};
8141 using subclasses_t = mp::List<>;
8143};
8144template <> struct node_from_variant_t<230> { using type = SgAsmLERelocTable; };
8145
8146// Class: AsmLESection
8147template <> struct describe_field_t<SgAsmLESection,SgAsmLESectionTableEntry*,&SgAsmLESection::p_sectionTableEntry> {
8148 using parent = SgAsmLESection;
8150 static constexpr size_t position{0};
8151 static constexpr char const * const name{"sectionTableEntry"};
8152 static constexpr char const * const typestr{"SgAsmLESectionTableEntry*"};
8153 static constexpr bool traverse{true};
8154 static constexpr auto mbr_ptr{&SgAsmLESection::p_sectionTableEntry};
8155 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8156 using bind = Desc<SgAsmLESection, SgAsmLESectionTableEntry* SgAsmLESection::*, &SgAsmLESection::p_sectionTableEntry>;
8157};
8158template <> struct describe_node_t<SgAsmLESection> {
8159 using node = SgAsmLESection;
8160 using base = SgAsmGenericSection;
8161 static constexpr char const * const name{"AsmLESection"};
8162 static constexpr unsigned long variant{231};
8163 static constexpr bool concrete{true};
8164 using subclasses_t = mp::List<>;
8166};
8167template <> struct node_from_variant_t<231> { using type = SgAsmLESection; };
8168
8169// Class: AsmLESectionTable
8171 using node = SgAsmLESectionTable;
8172 using base = SgAsmGenericSection;
8173 static constexpr char const * const name{"AsmLESectionTable"};
8174 static constexpr unsigned long variant{232};
8175 static constexpr bool concrete{true};
8176 using subclasses_t = mp::List<>;
8177 using fields_t = mp::List<>;
8178};
8179template <> struct node_from_variant_t<232> { using type = SgAsmLESectionTable; };
8180
8181// Class: AsmLESectionTableEntry
8182template <> struct describe_field_t<SgAsmLESectionTableEntry,unsigned,&SgAsmLESectionTableEntry::p_flags> {
8184 using field_type = unsigned;
8185 static constexpr size_t position{0};
8186 static constexpr char const * const name{"flags"};
8187 static constexpr char const * const typestr{"unsigned"};
8188 static constexpr bool traverse{false};
8189 static constexpr auto mbr_ptr{&SgAsmLESectionTableEntry::p_flags};
8190 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8191 using bind = Desc<SgAsmLESectionTableEntry, unsigned SgAsmLESectionTableEntry::*, &SgAsmLESectionTableEntry::p_flags>;
8192};
8193template <> struct describe_field_t<SgAsmLESectionTableEntry,unsigned,&SgAsmLESectionTableEntry::p_pageMapIndex> {
8195 using field_type = unsigned;
8196 static constexpr size_t position{1};
8197 static constexpr char const * const name{"pageMapIndex"};
8198 static constexpr char const * const typestr{"unsigned"};
8199 static constexpr bool traverse{false};
8200 static constexpr auto mbr_ptr{&SgAsmLESectionTableEntry::p_pageMapIndex};
8201 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8202 using bind = Desc<SgAsmLESectionTableEntry, unsigned SgAsmLESectionTableEntry::*, &SgAsmLESectionTableEntry::p_pageMapIndex>;
8203};
8204template <> struct describe_field_t<SgAsmLESectionTableEntry,unsigned,&SgAsmLESectionTableEntry::p_pageMapNEntries> {
8206 using field_type = unsigned;
8207 static constexpr size_t position{2};
8208 static constexpr char const * const name{"pageMapNEntries"};
8209 static constexpr char const * const typestr{"unsigned"};
8210 static constexpr bool traverse{false};
8211 static constexpr auto mbr_ptr{&SgAsmLESectionTableEntry::p_pageMapNEntries};
8212 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8213 using bind = Desc<SgAsmLESectionTableEntry, unsigned SgAsmLESectionTableEntry::*, &SgAsmLESectionTableEntry::p_pageMapNEntries>;
8214};
8215template <> struct describe_field_t<SgAsmLESectionTableEntry,unsigned,&SgAsmLESectionTableEntry::p_res1> {
8217 using field_type = unsigned;
8218 static constexpr size_t position{3};
8219 static constexpr char const * const name{"res1"};
8220 static constexpr char const * const typestr{"unsigned"};
8221 static constexpr bool traverse{false};
8222 static constexpr auto mbr_ptr{&SgAsmLESectionTableEntry::p_res1};
8223 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8224 using bind = Desc<SgAsmLESectionTableEntry, unsigned SgAsmLESectionTableEntry::*, &SgAsmLESectionTableEntry::p_res1>;
8225};
8226template <> struct describe_field_t<SgAsmLESectionTableEntry,rose_addr_t,&SgAsmLESectionTableEntry::p_mappedSize> {
8228 using field_type = rose_addr_t;
8229 static constexpr size_t position{4};
8230 static constexpr char const * const name{"mappedSize"};
8231 static constexpr char const * const typestr{"rose_addr_t"};
8232 static constexpr bool traverse{false};
8233 static constexpr auto mbr_ptr{&SgAsmLESectionTableEntry::p_mappedSize};
8234 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8235 using bind = Desc<SgAsmLESectionTableEntry, rose_addr_t SgAsmLESectionTableEntry::*, &SgAsmLESectionTableEntry::p_mappedSize>;
8236};
8237template <> struct describe_field_t<SgAsmLESectionTableEntry,rose_addr_t,&SgAsmLESectionTableEntry::p_baseAddr> {
8239 using field_type = rose_addr_t;
8240 static constexpr size_t position{5};
8241 static constexpr char const * const name{"baseAddr"};
8242 static constexpr char const * const typestr{"rose_addr_t"};
8243 static constexpr bool traverse{false};
8244 static constexpr auto mbr_ptr{&SgAsmLESectionTableEntry::p_baseAddr};
8245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8246 using bind = Desc<SgAsmLESectionTableEntry, rose_addr_t SgAsmLESectionTableEntry::*, &SgAsmLESectionTableEntry::p_baseAddr>;
8247};
8257template <> struct node_from_variant_t<233> { using type = SgAsmLESectionTableEntry; };
8258
8259// Class: AsmM68kInstruction
8260template <> struct describe_field_t<SgAsmM68kInstruction,Rose::BinaryAnalysis::M68kInstructionKind,&SgAsmM68kInstruction::p_kind> {
8262 using field_type = Rose::BinaryAnalysis::M68kInstructionKind;
8263 static constexpr size_t position{0};
8264 static constexpr char const * const name{"kind"};
8265 static constexpr char const * const typestr{"Rose::BinaryAnalysis::M68kInstructionKind"};
8266 static constexpr bool traverse{false};
8267 static constexpr auto mbr_ptr{&SgAsmM68kInstruction::p_kind};
8268 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8269 using bind = Desc<SgAsmM68kInstruction, Rose::BinaryAnalysis::M68kInstructionKind SgAsmM68kInstruction::*, &SgAsmM68kInstruction::p_kind>;
8270};
8271template <> struct describe_field_t<SgAsmM68kInstruction,Rose::BinaryAnalysis::M68kDataFormat,&SgAsmM68kInstruction::p_dataFormat> {
8273 using field_type = Rose::BinaryAnalysis::M68kDataFormat;
8274 static constexpr size_t position{1};
8275 static constexpr char const * const name{"dataFormat"};
8276 static constexpr char const * const typestr{"Rose::BinaryAnalysis::M68kDataFormat"};
8277 static constexpr bool traverse{false};
8278 static constexpr auto mbr_ptr{&SgAsmM68kInstruction::p_dataFormat};
8279 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8280 using bind = Desc<SgAsmM68kInstruction, Rose::BinaryAnalysis::M68kDataFormat SgAsmM68kInstruction::*, &SgAsmM68kInstruction::p_dataFormat>;
8281};
8283 using node = SgAsmM68kInstruction;
8284 using base = SgAsmInstruction;
8285 static constexpr char const * const name{"AsmM68kInstruction"};
8286 static constexpr unsigned long variant{234};
8287 static constexpr bool concrete{true};
8288 using subclasses_t = mp::List<>;
8290};
8291template <> struct node_from_variant_t<234> { using type = SgAsmM68kInstruction; };
8292
8293// Class: AsmMemoryReferenceExpression
8294template <> struct describe_field_t<SgAsmMemoryReferenceExpression,SgAsmExpression*,&SgAsmMemoryReferenceExpression::p_address> {
8296 using field_type = SgAsmExpression*;
8297 static constexpr size_t position{0};
8298 static constexpr char const * const name{"address"};
8299 static constexpr char const * const typestr{"SgAsmExpression*"};
8300 static constexpr bool traverse{true};
8301 static constexpr auto mbr_ptr{&SgAsmMemoryReferenceExpression::p_address};
8302 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8303 using bind = Desc<SgAsmMemoryReferenceExpression, SgAsmExpression* SgAsmMemoryReferenceExpression::*, &SgAsmMemoryReferenceExpression::p_address>;
8304};
8305template <> struct describe_field_t<SgAsmMemoryReferenceExpression,SgAsmExpression*,&SgAsmMemoryReferenceExpression::p_segment> {
8307 using field_type = SgAsmExpression*;
8308 static constexpr size_t position{1};
8309 static constexpr char const * const name{"segment"};
8310 static constexpr char const * const typestr{"SgAsmExpression*"};
8311 static constexpr bool traverse{true};
8312 static constexpr auto mbr_ptr{&SgAsmMemoryReferenceExpression::p_segment};
8313 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8314 using bind = Desc<SgAsmMemoryReferenceExpression, SgAsmExpression* SgAsmMemoryReferenceExpression::*, &SgAsmMemoryReferenceExpression::p_segment>;
8315};
8318 using base = SgAsmExpression;
8319 static constexpr char const * const name{"AsmMemoryReferenceExpression"};
8320 static constexpr unsigned long variant{235};
8321 static constexpr bool concrete{true};
8322 using subclasses_t = mp::List<>;
8324};
8325template <> struct node_from_variant_t<235> { using type = SgAsmMemoryReferenceExpression; };
8326
8327// Class: AsmMipsInstruction
8328template <> struct describe_field_t<SgAsmMipsInstruction,Rose::BinaryAnalysis::MipsInstructionKind,&SgAsmMipsInstruction::p_kind> {
8330 using field_type = Rose::BinaryAnalysis::MipsInstructionKind;
8331 static constexpr size_t position{0};
8332 static constexpr char const * const name{"kind"};
8333 static constexpr char const * const typestr{"Rose::BinaryAnalysis::MipsInstructionKind"};
8334 static constexpr bool traverse{false};
8335 static constexpr auto mbr_ptr{&SgAsmMipsInstruction::p_kind};
8336 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8337 using bind = Desc<SgAsmMipsInstruction, Rose::BinaryAnalysis::MipsInstructionKind SgAsmMipsInstruction::*, &SgAsmMipsInstruction::p_kind>;
8338};
8340 using node = SgAsmMipsInstruction;
8341 using base = SgAsmInstruction;
8342 static constexpr char const * const name{"AsmMipsInstruction"};
8343 static constexpr unsigned long variant{236};
8344 static constexpr bool concrete{true};
8345 using subclasses_t = mp::List<>;
8347};
8348template <> struct node_from_variant_t<236> { using type = SgAsmMipsInstruction; };
8349
8350// Class: AsmNEEntryPoint
8351template <> struct describe_field_t<SgAsmNEEntryPoint,SgAsmNEEntryPoint::NEEntryFlags,&SgAsmNEEntryPoint::p_flags> {
8352 using parent = SgAsmNEEntryPoint;
8353 using field_type = SgAsmNEEntryPoint::NEEntryFlags;
8354 static constexpr size_t position{0};
8355 static constexpr char const * const name{"flags"};
8356 static constexpr char const * const typestr{"SgAsmNEEntryPoint::NEEntryFlags"};
8357 static constexpr bool traverse{false};
8358 static constexpr auto mbr_ptr{&SgAsmNEEntryPoint::p_flags};
8359 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8360 using bind = Desc<SgAsmNEEntryPoint, SgAsmNEEntryPoint::NEEntryFlags SgAsmNEEntryPoint::*, &SgAsmNEEntryPoint::p_flags>;
8361};
8362template <> struct describe_field_t<SgAsmNEEntryPoint,unsigned,&SgAsmNEEntryPoint::p_int3f> {
8363 using parent = SgAsmNEEntryPoint;
8364 using field_type = unsigned;
8365 static constexpr size_t position{1};
8366 static constexpr char const * const name{"int3f"};
8367 static constexpr char const * const typestr{"unsigned"};
8368 static constexpr bool traverse{false};
8369 static constexpr auto mbr_ptr{&SgAsmNEEntryPoint::p_int3f};
8370 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8371 using bind = Desc<SgAsmNEEntryPoint, unsigned SgAsmNEEntryPoint::*, &SgAsmNEEntryPoint::p_int3f>;
8372};
8373template <> struct describe_field_t<SgAsmNEEntryPoint,unsigned,&SgAsmNEEntryPoint::p_sectionIndex> {
8374 using parent = SgAsmNEEntryPoint;
8375 using field_type = unsigned;
8376 static constexpr size_t position{2};
8377 static constexpr char const * const name{"sectionIndex"};
8378 static constexpr char const * const typestr{"unsigned"};
8379 static constexpr bool traverse{false};
8380 static constexpr auto mbr_ptr{&SgAsmNEEntryPoint::p_sectionIndex};
8381 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8382 using bind = Desc<SgAsmNEEntryPoint, unsigned SgAsmNEEntryPoint::*, &SgAsmNEEntryPoint::p_sectionIndex>;
8383};
8384template <> struct describe_field_t<SgAsmNEEntryPoint,unsigned,&SgAsmNEEntryPoint::p_sectionOffset> {
8385 using parent = SgAsmNEEntryPoint;
8386 using field_type = unsigned;
8387 static constexpr size_t position{3};
8388 static constexpr char const * const name{"sectionOffset"};
8389 static constexpr char const * const typestr{"unsigned"};
8390 static constexpr bool traverse{false};
8391 static constexpr auto mbr_ptr{&SgAsmNEEntryPoint::p_sectionOffset};
8392 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8393 using bind = Desc<SgAsmNEEntryPoint, unsigned SgAsmNEEntryPoint::*, &SgAsmNEEntryPoint::p_sectionOffset>;
8394};
8404template <> struct node_from_variant_t<237> { using type = SgAsmNEEntryPoint; };
8405
8406// Class: AsmNEEntryTable
8407template <> struct describe_field_t<SgAsmNEEntryTable,SgSizeTList,&SgAsmNEEntryTable::p_bundle_sizes> {
8408 using parent = SgAsmNEEntryTable;
8409 using field_type = SgSizeTList;
8410 static constexpr size_t position{0};
8411 static constexpr char const * const name{"bundle_sizes"};
8412 static constexpr char const * const typestr{"SgSizeTList"};
8413 static constexpr bool traverse{false};
8414 static constexpr auto mbr_ptr{&SgAsmNEEntryTable::p_bundle_sizes};
8415 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8416 using bind = Desc<SgAsmNEEntryTable, SgSizeTList SgAsmNEEntryTable::*, &SgAsmNEEntryTable::p_bundle_sizes>;
8417};
8418template <> struct describe_field_t<SgAsmNEEntryTable,SgAsmNEEntryPointPtrList,&SgAsmNEEntryTable::p_entries> {
8419 using parent = SgAsmNEEntryTable;
8420 using field_type = SgAsmNEEntryPointPtrList;
8421 static constexpr size_t position{1};
8422 static constexpr char const * const name{"entries"};
8423 static constexpr char const * const typestr{"SgAsmNEEntryPointPtrList"};
8424 static constexpr bool traverse{true};
8425 static constexpr auto mbr_ptr{&SgAsmNEEntryTable::p_entries};
8426 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8427 using bind = Desc<SgAsmNEEntryTable, SgAsmNEEntryPointPtrList SgAsmNEEntryTable::*, &SgAsmNEEntryTable::p_entries>;
8428};
8430 using node = SgAsmNEEntryTable;
8431 using base = SgAsmGenericSection;
8432 static constexpr char const * const name{"AsmNEEntryTable"};
8433 static constexpr unsigned long variant{238};
8434 static constexpr bool concrete{true};
8435 using subclasses_t = mp::List<>;
8437};
8438template <> struct node_from_variant_t<238> { using type = SgAsmNEEntryTable; };
8439
8440// Class: AsmNEFileHeader
8441template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_linker_major> {
8442 using parent = SgAsmNEFileHeader;
8443 using field_type = unsigned;
8444 static constexpr size_t position{0};
8445 static constexpr char const * const name{"e_linker_major"};
8446 static constexpr char const * const typestr{"unsigned"};
8447 static constexpr bool traverse{false};
8448 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_linker_major};
8449 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8450 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_linker_major>;
8451};
8452template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_linker_minor> {
8453 using parent = SgAsmNEFileHeader;
8454 using field_type = unsigned;
8455 static constexpr size_t position{1};
8456 static constexpr char const * const name{"e_linker_minor"};
8457 static constexpr char const * const typestr{"unsigned"};
8458 static constexpr bool traverse{false};
8459 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_linker_minor};
8460 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8461 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_linker_minor>;
8462};
8463template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_checksum> {
8464 using parent = SgAsmNEFileHeader;
8465 using field_type = unsigned;
8466 static constexpr size_t position{2};
8467 static constexpr char const * const name{"e_checksum"};
8468 static constexpr char const * const typestr{"unsigned"};
8469 static constexpr bool traverse{false};
8470 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_checksum};
8471 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8472 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_checksum>;
8473};
8474template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_flags1> {
8475 using parent = SgAsmNEFileHeader;
8476 using field_type = unsigned;
8477 static constexpr size_t position{3};
8478 static constexpr char const * const name{"e_flags1"};
8479 static constexpr char const * const typestr{"unsigned"};
8480 static constexpr bool traverse{false};
8481 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_flags1};
8482 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8483 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_flags1>;
8484};
8485template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_autodata_sn> {
8486 using parent = SgAsmNEFileHeader;
8487 using field_type = unsigned;
8488 static constexpr size_t position{4};
8489 static constexpr char const * const name{"e_autodata_sn"};
8490 static constexpr char const * const typestr{"unsigned"};
8491 static constexpr bool traverse{false};
8492 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_autodata_sn};
8493 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8494 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_autodata_sn>;
8495};
8496template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_bss_size> {
8497 using parent = SgAsmNEFileHeader;
8498 using field_type = unsigned;
8499 static constexpr size_t position{5};
8500 static constexpr char const * const name{"e_bss_size"};
8501 static constexpr char const * const typestr{"unsigned"};
8502 static constexpr bool traverse{false};
8503 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_bss_size};
8504 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8505 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_bss_size>;
8506};
8507template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_stack_size> {
8508 using parent = SgAsmNEFileHeader;
8509 using field_type = unsigned;
8510 static constexpr size_t position{6};
8511 static constexpr char const * const name{"e_stack_size"};
8512 static constexpr char const * const typestr{"unsigned"};
8513 static constexpr bool traverse{false};
8514 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_stack_size};
8515 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8516 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_stack_size>;
8517};
8518template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_csip> {
8519 using parent = SgAsmNEFileHeader;
8520 using field_type = unsigned;
8521 static constexpr size_t position{7};
8522 static constexpr char const * const name{"e_csip"};
8523 static constexpr char const * const typestr{"unsigned"};
8524 static constexpr bool traverse{false};
8525 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_csip};
8526 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8527 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_csip>;
8528};
8529template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_sssp> {
8530 using parent = SgAsmNEFileHeader;
8531 using field_type = unsigned;
8532 static constexpr size_t position{8};
8533 static constexpr char const * const name{"e_sssp"};
8534 static constexpr char const * const typestr{"unsigned"};
8535 static constexpr bool traverse{false};
8536 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_sssp};
8537 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8538 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_sssp>;
8539};
8540template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nsections> {
8541 using parent = SgAsmNEFileHeader;
8542 using field_type = unsigned;
8543 static constexpr size_t position{9};
8544 static constexpr char const * const name{"e_nsections"};
8545 static constexpr char const * const typestr{"unsigned"};
8546 static constexpr bool traverse{false};
8547 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_nsections};
8548 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8549 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_nsections>;
8550};
8551template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nmodrefs> {
8552 using parent = SgAsmNEFileHeader;
8553 using field_type = unsigned;
8554 static constexpr size_t position{10};
8555 static constexpr char const * const name{"e_nmodrefs"};
8556 static constexpr char const * const typestr{"unsigned"};
8557 static constexpr bool traverse{false};
8558 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_nmodrefs};
8559 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8560 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_nmodrefs>;
8561};
8562template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nnonresnames> {
8563 using parent = SgAsmNEFileHeader;
8564 using field_type = unsigned;
8565 static constexpr size_t position{11};
8566 static constexpr char const * const name{"e_nnonresnames"};
8567 static constexpr char const * const typestr{"unsigned"};
8568 static constexpr bool traverse{false};
8569 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_nnonresnames};
8570 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8571 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_nnonresnames>;
8572};
8573template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nmovable_entries> {
8574 using parent = SgAsmNEFileHeader;
8575 using field_type = unsigned;
8576 static constexpr size_t position{12};
8577 static constexpr char const * const name{"e_nmovable_entries"};
8578 static constexpr char const * const typestr{"unsigned"};
8579 static constexpr bool traverse{false};
8580 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_nmovable_entries};
8581 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8582 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_nmovable_entries>;
8583};
8584template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_sector_align> {
8585 using parent = SgAsmNEFileHeader;
8586 using field_type = unsigned;
8587 static constexpr size_t position{13};
8588 static constexpr char const * const name{"e_sector_align"};
8589 static constexpr char const * const typestr{"unsigned"};
8590 static constexpr bool traverse{false};
8591 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_sector_align};
8592 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8593 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_sector_align>;
8594};
8595template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nresources> {
8596 using parent = SgAsmNEFileHeader;
8597 using field_type = unsigned;
8598 static constexpr size_t position{14};
8599 static constexpr char const * const name{"e_nresources"};
8600 static constexpr char const * const typestr{"unsigned"};
8601 static constexpr bool traverse{false};
8602 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_nresources};
8603 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8604 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_nresources>;
8605};
8606template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_exetype> {
8607 using parent = SgAsmNEFileHeader;
8608 using field_type = unsigned;
8609 static constexpr size_t position{15};
8610 static constexpr char const * const name{"e_exetype"};
8611 static constexpr char const * const typestr{"unsigned"};
8612 static constexpr bool traverse{false};
8613 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_exetype};
8614 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8615 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_exetype>;
8616};
8617template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_flags2> {
8618 using parent = SgAsmNEFileHeader;
8619 using field_type = unsigned;
8620 static constexpr size_t position{16};
8621 static constexpr char const * const name{"e_flags2"};
8622 static constexpr char const * const typestr{"unsigned"};
8623 static constexpr bool traverse{false};
8624 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_flags2};
8625 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8626 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_flags2>;
8627};
8628template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_res1> {
8629 using parent = SgAsmNEFileHeader;
8630 using field_type = unsigned;
8631 static constexpr size_t position{17};
8632 static constexpr char const * const name{"e_res1"};
8633 static constexpr char const * const typestr{"unsigned"};
8634 static constexpr bool traverse{false};
8635 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_res1};
8636 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8637 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_res1>;
8638};
8639template <> struct describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_winvers> {
8640 using parent = SgAsmNEFileHeader;
8641 using field_type = unsigned;
8642 static constexpr size_t position{18};
8643 static constexpr char const * const name{"e_winvers"};
8644 static constexpr char const * const typestr{"unsigned"};
8645 static constexpr bool traverse{false};
8646 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_winvers};
8647 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8648 using bind = Desc<SgAsmNEFileHeader, unsigned SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_winvers>;
8649};
8650template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_entrytab_rfo> {
8651 using parent = SgAsmNEFileHeader;
8652 using field_type = rose_addr_t;
8653 static constexpr size_t position{19};
8654 static constexpr char const * const name{"e_entrytab_rfo"};
8655 static constexpr char const * const typestr{"rose_addr_t"};
8656 static constexpr bool traverse{false};
8657 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_entrytab_rfo};
8658 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8659 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_entrytab_rfo>;
8660};
8661template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_entrytab_size> {
8662 using parent = SgAsmNEFileHeader;
8663 using field_type = rose_addr_t;
8664 static constexpr size_t position{20};
8665 static constexpr char const * const name{"e_entrytab_size"};
8666 static constexpr char const * const typestr{"rose_addr_t"};
8667 static constexpr bool traverse{false};
8668 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_entrytab_size};
8669 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8670 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_entrytab_size>;
8671};
8672template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_sectab_rfo> {
8673 using parent = SgAsmNEFileHeader;
8674 using field_type = rose_addr_t;
8675 static constexpr size_t position{21};
8676 static constexpr char const * const name{"e_sectab_rfo"};
8677 static constexpr char const * const typestr{"rose_addr_t"};
8678 static constexpr bool traverse{false};
8679 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_sectab_rfo};
8680 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8681 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_sectab_rfo>;
8682};
8683template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_rsrctab_rfo> {
8684 using parent = SgAsmNEFileHeader;
8685 using field_type = rose_addr_t;
8686 static constexpr size_t position{22};
8687 static constexpr char const * const name{"e_rsrctab_rfo"};
8688 static constexpr char const * const typestr{"rose_addr_t"};
8689 static constexpr bool traverse{false};
8690 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_rsrctab_rfo};
8691 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8692 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_rsrctab_rfo>;
8693};
8694template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_resnametab_rfo> {
8695 using parent = SgAsmNEFileHeader;
8696 using field_type = rose_addr_t;
8697 static constexpr size_t position{23};
8698 static constexpr char const * const name{"e_resnametab_rfo"};
8699 static constexpr char const * const typestr{"rose_addr_t"};
8700 static constexpr bool traverse{false};
8701 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_resnametab_rfo};
8702 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8703 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_resnametab_rfo>;
8704};
8705template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_modreftab_rfo> {
8706 using parent = SgAsmNEFileHeader;
8707 using field_type = rose_addr_t;
8708 static constexpr size_t position{24};
8709 static constexpr char const * const name{"e_modreftab_rfo"};
8710 static constexpr char const * const typestr{"rose_addr_t"};
8711 static constexpr bool traverse{false};
8712 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_modreftab_rfo};
8713 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8714 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_modreftab_rfo>;
8715};
8716template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_importnametab_rfo> {
8717 using parent = SgAsmNEFileHeader;
8718 using field_type = rose_addr_t;
8719 static constexpr size_t position{25};
8720 static constexpr char const * const name{"e_importnametab_rfo"};
8721 static constexpr char const * const typestr{"rose_addr_t"};
8722 static constexpr bool traverse{false};
8723 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_importnametab_rfo};
8724 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8725 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_importnametab_rfo>;
8726};
8727template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_nonresnametab_offset> {
8728 using parent = SgAsmNEFileHeader;
8729 using field_type = rose_addr_t;
8730 static constexpr size_t position{26};
8731 static constexpr char const * const name{"e_nonresnametab_offset"};
8732 static constexpr char const * const typestr{"rose_addr_t"};
8733 static constexpr bool traverse{false};
8734 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_nonresnametab_offset};
8735 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8736 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_nonresnametab_offset>;
8737};
8738template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_fastload_sector> {
8739 using parent = SgAsmNEFileHeader;
8740 using field_type = rose_addr_t;
8741 static constexpr size_t position{27};
8742 static constexpr char const * const name{"e_fastload_sector"};
8743 static constexpr char const * const typestr{"rose_addr_t"};
8744 static constexpr bool traverse{false};
8745 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_fastload_sector};
8746 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8747 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_fastload_sector>;
8748};
8749template <> struct describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_fastload_nsectors> {
8750 using parent = SgAsmNEFileHeader;
8751 using field_type = rose_addr_t;
8752 static constexpr size_t position{28};
8753 static constexpr char const * const name{"e_fastload_nsectors"};
8754 static constexpr char const * const typestr{"rose_addr_t"};
8755 static constexpr bool traverse{false};
8756 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_e_fastload_nsectors};
8757 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8758 using bind = Desc<SgAsmNEFileHeader, rose_addr_t SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_e_fastload_nsectors>;
8759};
8760template <> struct describe_field_t<SgAsmNEFileHeader,SgAsmDOSExtendedHeader*,&SgAsmNEFileHeader::p_dos2Header> {
8761 using parent = SgAsmNEFileHeader;
8763 static constexpr size_t position{29};
8764 static constexpr char const * const name{"dos2Header"};
8765 static constexpr char const * const typestr{"SgAsmDOSExtendedHeader*"};
8766 static constexpr bool traverse{true};
8767 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_dos2Header};
8768 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8769 using bind = Desc<SgAsmNEFileHeader, SgAsmDOSExtendedHeader* SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_dos2Header>;
8770};
8771template <> struct describe_field_t<SgAsmNEFileHeader,SgAsmNESectionTable*,&SgAsmNEFileHeader::p_sectionTable> {
8772 using parent = SgAsmNEFileHeader;
8774 static constexpr size_t position{30};
8775 static constexpr char const * const name{"sectionTable"};
8776 static constexpr char const * const typestr{"SgAsmNESectionTable*"};
8777 static constexpr bool traverse{false};
8778 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_sectionTable};
8779 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8780 using bind = Desc<SgAsmNEFileHeader, SgAsmNESectionTable* SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_sectionTable>;
8781};
8782template <> struct describe_field_t<SgAsmNEFileHeader,SgAsmNENameTable*,&SgAsmNEFileHeader::p_residentNameTable> {
8783 using parent = SgAsmNEFileHeader;
8785 static constexpr size_t position{31};
8786 static constexpr char const * const name{"residentNameTable"};
8787 static constexpr char const * const typestr{"SgAsmNENameTable*"};
8788 static constexpr bool traverse{true};
8789 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_residentNameTable};
8790 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8791 using bind = Desc<SgAsmNEFileHeader, SgAsmNENameTable* SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_residentNameTable>;
8792};
8793template <> struct describe_field_t<SgAsmNEFileHeader,SgAsmNENameTable*,&SgAsmNEFileHeader::p_nonresidentNameTable> {
8794 using parent = SgAsmNEFileHeader;
8796 static constexpr size_t position{32};
8797 static constexpr char const * const name{"nonresidentNameTable"};
8798 static constexpr char const * const typestr{"SgAsmNENameTable*"};
8799 static constexpr bool traverse{true};
8800 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_nonresidentNameTable};
8801 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8802 using bind = Desc<SgAsmNEFileHeader, SgAsmNENameTable* SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_nonresidentNameTable>;
8803};
8804template <> struct describe_field_t<SgAsmNEFileHeader,SgAsmNEModuleTable*,&SgAsmNEFileHeader::p_moduleTable> {
8805 using parent = SgAsmNEFileHeader;
8807 static constexpr size_t position{33};
8808 static constexpr char const * const name{"moduleTable"};
8809 static constexpr char const * const typestr{"SgAsmNEModuleTable*"};
8810 static constexpr bool traverse{true};
8811 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_moduleTable};
8812 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8813 using bind = Desc<SgAsmNEFileHeader, SgAsmNEModuleTable* SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_moduleTable>;
8814};
8815template <> struct describe_field_t<SgAsmNEFileHeader,SgAsmNEEntryTable*,&SgAsmNEFileHeader::p_entryTable> {
8816 using parent = SgAsmNEFileHeader;
8818 static constexpr size_t position{34};
8819 static constexpr char const * const name{"entryTable"};
8820 static constexpr char const * const typestr{"SgAsmNEEntryTable*"};
8821 static constexpr bool traverse{true};
8822 static constexpr auto mbr_ptr{&SgAsmNEFileHeader::p_entryTable};
8823 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8824 using bind = Desc<SgAsmNEFileHeader, SgAsmNEEntryTable* SgAsmNEFileHeader::*, &SgAsmNEFileHeader::p_entryTable>;
8825};
8827 using node = SgAsmNEFileHeader;
8828 using base = SgAsmGenericHeader;
8829 static constexpr char const * const name{"AsmNEFileHeader"};
8830 static constexpr unsigned long variant{239};
8831 static constexpr bool concrete{true};
8832 using subclasses_t = mp::List<>;
8833 using fields_t = mp::List<describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_linker_major>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_linker_minor>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_checksum>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_flags1>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_autodata_sn>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_bss_size>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_stack_size>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_csip>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_sssp>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nsections>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nmodrefs>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nnonresnames>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nmovable_entries>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_sector_align>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_nresources>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_exetype>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_flags2>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_res1>, describe_field_t<SgAsmNEFileHeader,unsigned,&SgAsmNEFileHeader::p_e_winvers>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_entrytab_rfo>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_entrytab_size>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_sectab_rfo>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_rsrctab_rfo>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_resnametab_rfo>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_modreftab_rfo>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_importnametab_rfo>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_nonresnametab_offset>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_fastload_sector>, describe_field_t<SgAsmNEFileHeader,rose_addr_t,&SgAsmNEFileHeader::p_e_fastload_nsectors>, describe_field_t<SgAsmNEFileHeader,SgAsmDOSExtendedHeader*,&SgAsmNEFileHeader::p_dos2Header>, describe_field_t<SgAsmNEFileHeader,SgAsmNESectionTable*,&SgAsmNEFileHeader::p_sectionTable>, describe_field_t<SgAsmNEFileHeader,SgAsmNENameTable*,&SgAsmNEFileHeader::p_residentNameTable>, describe_field_t<SgAsmNEFileHeader,SgAsmNENameTable*,&SgAsmNEFileHeader::p_nonresidentNameTable>, describe_field_t<SgAsmNEFileHeader,SgAsmNEModuleTable*,&SgAsmNEFileHeader::p_moduleTable>, describe_field_t<SgAsmNEFileHeader,SgAsmNEEntryTable*,&SgAsmNEFileHeader::p_entryTable>>;
8834};
8835template <> struct node_from_variant_t<239> { using type = SgAsmNEFileHeader; };
8836
8837// Class: AsmNEModuleTable
8838template <> struct describe_field_t<SgAsmNEModuleTable,SgAsmNEStringTable*,&SgAsmNEModuleTable::p_strtab> {
8839 using parent = SgAsmNEModuleTable;
8841 static constexpr size_t position{0};
8842 static constexpr char const * const name{"strtab"};
8843 static constexpr char const * const typestr{"SgAsmNEStringTable*"};
8844 static constexpr bool traverse{true};
8845 static constexpr auto mbr_ptr{&SgAsmNEModuleTable::p_strtab};
8846 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8847 using bind = Desc<SgAsmNEModuleTable, SgAsmNEStringTable* SgAsmNEModuleTable::*, &SgAsmNEModuleTable::p_strtab>;
8848};
8849template <> struct describe_field_t<SgAsmNEModuleTable,SgAddressList,&SgAsmNEModuleTable::p_nameOffsets> {
8850 using parent = SgAsmNEModuleTable;
8851 using field_type = SgAddressList;
8852 static constexpr size_t position{1};
8853 static constexpr char const * const name{"nameOffsets"};
8854 static constexpr char const * const typestr{"SgAddressList"};
8855 static constexpr bool traverse{false};
8856 static constexpr auto mbr_ptr{&SgAsmNEModuleTable::p_nameOffsets};
8857 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8858 using bind = Desc<SgAsmNEModuleTable, SgAddressList SgAsmNEModuleTable::*, &SgAsmNEModuleTable::p_nameOffsets>;
8859};
8860template <> struct describe_field_t<SgAsmNEModuleTable,SgStringList,&SgAsmNEModuleTable::p_names> {
8861 using parent = SgAsmNEModuleTable;
8862 using field_type = SgStringList;
8863 static constexpr size_t position{2};
8864 static constexpr char const * const name{"names"};
8865 static constexpr char const * const typestr{"SgStringList"};
8866 static constexpr bool traverse{false};
8867 static constexpr auto mbr_ptr{&SgAsmNEModuleTable::p_names};
8868 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8869 using bind = Desc<SgAsmNEModuleTable, SgStringList SgAsmNEModuleTable::*, &SgAsmNEModuleTable::p_names>;
8870};
8872 using node = SgAsmNEModuleTable;
8873 using base = SgAsmGenericSection;
8874 static constexpr char const * const name{"AsmNEModuleTable"};
8875 static constexpr unsigned long variant{240};
8876 static constexpr bool concrete{true};
8877 using subclasses_t = mp::List<>;
8879};
8880template <> struct node_from_variant_t<240> { using type = SgAsmNEModuleTable; };
8881
8882// Class: AsmNENameTable
8883template <> struct describe_field_t<SgAsmNENameTable,SgStringList,&SgAsmNENameTable::p_names> {
8884 using parent = SgAsmNENameTable;
8885 using field_type = SgStringList;
8886 static constexpr size_t position{0};
8887 static constexpr char const * const name{"names"};
8888 static constexpr char const * const typestr{"SgStringList"};
8889 static constexpr bool traverse{false};
8890 static constexpr auto mbr_ptr{&SgAsmNENameTable::p_names};
8891 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8892 using bind = Desc<SgAsmNENameTable, SgStringList SgAsmNENameTable::*, &SgAsmNENameTable::p_names>;
8893};
8894template <> struct describe_field_t<SgAsmNENameTable,SgUnsignedList,&SgAsmNENameTable::p_ordinals> {
8895 using parent = SgAsmNENameTable;
8896 using field_type = SgUnsignedList;
8897 static constexpr size_t position{1};
8898 static constexpr char const * const name{"ordinals"};
8899 static constexpr char const * const typestr{"SgUnsignedList"};
8900 static constexpr bool traverse{false};
8901 static constexpr auto mbr_ptr{&SgAsmNENameTable::p_ordinals};
8902 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8903 using bind = Desc<SgAsmNENameTable, SgUnsignedList SgAsmNENameTable::*, &SgAsmNENameTable::p_ordinals>;
8904};
8906 using node = SgAsmNENameTable;
8907 using base = SgAsmGenericSection;
8908 static constexpr char const * const name{"AsmNENameTable"};
8909 static constexpr unsigned long variant{241};
8910 static constexpr bool concrete{true};
8911 using subclasses_t = mp::List<>;
8913};
8914template <> struct node_from_variant_t<241> { using type = SgAsmNENameTable; };
8915
8916// Class: AsmNERelocEntry
8917template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::NERelocSrcType,&SgAsmNERelocEntry::p_src_type> {
8918 using parent = SgAsmNERelocEntry;
8919 using field_type = SgAsmNERelocEntry::NERelocSrcType;
8920 static constexpr size_t position{0};
8921 static constexpr char const * const name{"src_type"};
8922 static constexpr char const * const typestr{"SgAsmNERelocEntry::NERelocSrcType"};
8923 static constexpr bool traverse{false};
8924 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_src_type};
8925 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8926 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::NERelocSrcType SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_src_type>;
8927};
8928template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::NERelocModifiers,&SgAsmNERelocEntry::p_modifier> {
8929 using parent = SgAsmNERelocEntry;
8930 using field_type = SgAsmNERelocEntry::NERelocModifiers;
8931 static constexpr size_t position{1};
8932 static constexpr char const * const name{"modifier"};
8933 static constexpr char const * const typestr{"SgAsmNERelocEntry::NERelocModifiers"};
8934 static constexpr bool traverse{false};
8935 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_modifier};
8936 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8937 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::NERelocModifiers SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_modifier>;
8938};
8939template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::NERelocTgtType,&SgAsmNERelocEntry::p_tgt_type> {
8940 using parent = SgAsmNERelocEntry;
8941 using field_type = SgAsmNERelocEntry::NERelocTgtType;
8942 static constexpr size_t position{2};
8943 static constexpr char const * const name{"tgt_type"};
8944 static constexpr char const * const typestr{"SgAsmNERelocEntry::NERelocTgtType"};
8945 static constexpr bool traverse{false};
8946 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_tgt_type};
8947 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8948 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::NERelocTgtType SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_tgt_type>;
8949};
8950template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::NERelocFlags,&SgAsmNERelocEntry::p_flags> {
8951 using parent = SgAsmNERelocEntry;
8952 using field_type = SgAsmNERelocEntry::NERelocFlags;
8953 static constexpr size_t position{3};
8954 static constexpr char const * const name{"flags"};
8955 static constexpr char const * const typestr{"SgAsmNERelocEntry::NERelocFlags"};
8956 static constexpr bool traverse{false};
8957 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_flags};
8958 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8959 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::NERelocFlags SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_flags>;
8960};
8961template <> struct describe_field_t<SgAsmNERelocEntry,rose_addr_t,&SgAsmNERelocEntry::p_src_offset> {
8962 using parent = SgAsmNERelocEntry;
8963 using field_type = rose_addr_t;
8964 static constexpr size_t position{4};
8965 static constexpr char const * const name{"src_offset"};
8966 static constexpr char const * const typestr{"rose_addr_t"};
8967 static constexpr bool traverse{false};
8968 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_src_offset};
8969 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8970 using bind = Desc<SgAsmNERelocEntry, rose_addr_t SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_src_offset>;
8971};
8972template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::iref_type,&SgAsmNERelocEntry::p_iref> {
8973 using parent = SgAsmNERelocEntry;
8975 static constexpr size_t position{5};
8976 static constexpr char const * const name{"iref"};
8977 static constexpr char const * const typestr{"SgAsmNERelocEntry::iref_type"};
8978 static constexpr bool traverse{false};
8979 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_iref};
8980 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8981 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::iref_type SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_iref>;
8982};
8983template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::iord_type,&SgAsmNERelocEntry::p_iord> {
8984 using parent = SgAsmNERelocEntry;
8986 static constexpr size_t position{6};
8987 static constexpr char const * const name{"iord"};
8988 static constexpr char const * const typestr{"SgAsmNERelocEntry::iord_type"};
8989 static constexpr bool traverse{false};
8990 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_iord};
8991 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
8992 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::iord_type SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_iord>;
8993};
8994template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::iname_type,&SgAsmNERelocEntry::p_iname> {
8995 using parent = SgAsmNERelocEntry;
8997 static constexpr size_t position{7};
8998 static constexpr char const * const name{"iname"};
8999 static constexpr char const * const typestr{"SgAsmNERelocEntry::iname_type"};
9000 static constexpr bool traverse{false};
9001 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_iname};
9002 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9003 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::iname_type SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_iname>;
9004};
9005template <> struct describe_field_t<SgAsmNERelocEntry,SgAsmNERelocEntry::osfixup_type,&SgAsmNERelocEntry::p_osfixup> {
9006 using parent = SgAsmNERelocEntry;
9008 static constexpr size_t position{8};
9009 static constexpr char const * const name{"osfixup"};
9010 static constexpr char const * const typestr{"SgAsmNERelocEntry::osfixup_type"};
9011 static constexpr bool traverse{false};
9012 static constexpr auto mbr_ptr{&SgAsmNERelocEntry::p_osfixup};
9013 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9014 using bind = Desc<SgAsmNERelocEntry, SgAsmNERelocEntry::osfixup_type SgAsmNERelocEntry::*, &SgAsmNERelocEntry::p_osfixup>;
9015};
9025template <> struct node_from_variant_t<242> { using type = SgAsmNERelocEntry; };
9026
9027// Class: AsmNERelocTable
9028template <> struct describe_field_t<SgAsmNERelocTable,SgAsmNERelocEntryPtrList,&SgAsmNERelocTable::p_entries> {
9029 using parent = SgAsmNERelocTable;
9030 using field_type = SgAsmNERelocEntryPtrList;
9031 static constexpr size_t position{0};
9032 static constexpr char const * const name{"entries"};
9033 static constexpr char const * const typestr{"SgAsmNERelocEntryPtrList"};
9034 static constexpr bool traverse{true};
9035 static constexpr auto mbr_ptr{&SgAsmNERelocTable::p_entries};
9036 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9037 using bind = Desc<SgAsmNERelocTable, SgAsmNERelocEntryPtrList SgAsmNERelocTable::*, &SgAsmNERelocTable::p_entries>;
9038};
9040 using node = SgAsmNERelocTable;
9041 using base = SgAsmGenericSection;
9042 static constexpr char const * const name{"AsmNERelocTable"};
9043 static constexpr unsigned long variant{243};
9044 static constexpr bool concrete{true};
9045 using subclasses_t = mp::List<>;
9047};
9048template <> struct node_from_variant_t<243> { using type = SgAsmNERelocTable; };
9049
9050// Class: AsmNESection
9051template <> struct describe_field_t<SgAsmNESection,SgAsmNESectionTableEntry*,&SgAsmNESection::p_sectionTableEntry> {
9052 using parent = SgAsmNESection;
9054 static constexpr size_t position{0};
9055 static constexpr char const * const name{"sectionTableEntry"};
9056 static constexpr char const * const typestr{"SgAsmNESectionTableEntry*"};
9057 static constexpr bool traverse{true};
9058 static constexpr auto mbr_ptr{&SgAsmNESection::p_sectionTableEntry};
9059 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9060 using bind = Desc<SgAsmNESection, SgAsmNESectionTableEntry* SgAsmNESection::*, &SgAsmNESection::p_sectionTableEntry>;
9061};
9062template <> struct describe_field_t<SgAsmNESection,SgAsmNERelocTable*,&SgAsmNESection::p_relocationTable> {
9063 using parent = SgAsmNESection;
9065 static constexpr size_t position{1};
9066 static constexpr char const * const name{"relocationTable"};
9067 static constexpr char const * const typestr{"SgAsmNERelocTable*"};
9068 static constexpr bool traverse{true};
9069 static constexpr auto mbr_ptr{&SgAsmNESection::p_relocationTable};
9070 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9071 using bind = Desc<SgAsmNESection, SgAsmNERelocTable* SgAsmNESection::*, &SgAsmNESection::p_relocationTable>;
9072};
9073template <> struct describe_node_t<SgAsmNESection> {
9074 using node = SgAsmNESection;
9075 using base = SgAsmGenericSection;
9076 static constexpr char const * const name{"AsmNESection"};
9077 static constexpr unsigned long variant{244};
9078 static constexpr bool concrete{true};
9079 using subclasses_t = mp::List<>;
9081};
9082template <> struct node_from_variant_t<244> { using type = SgAsmNESection; };
9083
9084// Class: AsmNESectionTable
9085template <> struct describe_field_t<SgAsmNESectionTable,unsigned,&SgAsmNESectionTable::p_flags> {
9087 using field_type = unsigned;
9088 static constexpr size_t position{0};
9089 static constexpr char const * const name{"flags"};
9090 static constexpr char const * const typestr{"unsigned"};
9091 static constexpr bool traverse{false};
9092 static constexpr auto mbr_ptr{&SgAsmNESectionTable::p_flags};
9093 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9094 using bind = Desc<SgAsmNESectionTable, unsigned SgAsmNESectionTable::*, &SgAsmNESectionTable::p_flags>;
9095};
9096template <> struct describe_field_t<SgAsmNESectionTable,unsigned,&SgAsmNESectionTable::p_sector> {
9098 using field_type = unsigned;
9099 static constexpr size_t position{1};
9100 static constexpr char const * const name{"sector"};
9101 static constexpr char const * const typestr{"unsigned"};
9102 static constexpr bool traverse{false};
9103 static constexpr auto mbr_ptr{&SgAsmNESectionTable::p_sector};
9104 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9105 using bind = Desc<SgAsmNESectionTable, unsigned SgAsmNESectionTable::*, &SgAsmNESectionTable::p_sector>;
9106};
9107template <> struct describe_field_t<SgAsmNESectionTable,rose_addr_t,&SgAsmNESectionTable::p_physicalSize> {
9109 using field_type = rose_addr_t;
9110 static constexpr size_t position{2};
9111 static constexpr char const * const name{"physicalSize"};
9112 static constexpr char const * const typestr{"rose_addr_t"};
9113 static constexpr bool traverse{false};
9114 static constexpr auto mbr_ptr{&SgAsmNESectionTable::p_physicalSize};
9115 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9116 using bind = Desc<SgAsmNESectionTable, rose_addr_t SgAsmNESectionTable::*, &SgAsmNESectionTable::p_physicalSize>;
9117};
9118template <> struct describe_field_t<SgAsmNESectionTable,rose_addr_t,&SgAsmNESectionTable::p_virtualSize> {
9120 using field_type = rose_addr_t;
9121 static constexpr size_t position{3};
9122 static constexpr char const * const name{"virtualSize"};
9123 static constexpr char const * const typestr{"rose_addr_t"};
9124 static constexpr bool traverse{false};
9125 static constexpr auto mbr_ptr{&SgAsmNESectionTable::p_virtualSize};
9126 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9127 using bind = Desc<SgAsmNESectionTable, rose_addr_t SgAsmNESectionTable::*, &SgAsmNESectionTable::p_virtualSize>;
9128};
9138template <> struct node_from_variant_t<245> { using type = SgAsmNESectionTable; };
9139
9140// Class: AsmNESectionTableEntry
9141template <> struct describe_field_t<SgAsmNESectionTableEntry,unsigned,&SgAsmNESectionTableEntry::p_flags> {
9143 using field_type = unsigned;
9144 static constexpr size_t position{0};
9145 static constexpr char const * const name{"flags"};
9146 static constexpr char const * const typestr{"unsigned"};
9147 static constexpr bool traverse{false};
9148 static constexpr auto mbr_ptr{&SgAsmNESectionTableEntry::p_flags};
9149 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9150 using bind = Desc<SgAsmNESectionTableEntry, unsigned SgAsmNESectionTableEntry::*, &SgAsmNESectionTableEntry::p_flags>;
9151};
9152template <> struct describe_field_t<SgAsmNESectionTableEntry,unsigned,&SgAsmNESectionTableEntry::p_sector> {
9154 using field_type = unsigned;
9155 static constexpr size_t position{1};
9156 static constexpr char const * const name{"sector"};
9157 static constexpr char const * const typestr{"unsigned"};
9158 static constexpr bool traverse{false};
9159 static constexpr auto mbr_ptr{&SgAsmNESectionTableEntry::p_sector};
9160 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9161 using bind = Desc<SgAsmNESectionTableEntry, unsigned SgAsmNESectionTableEntry::*, &SgAsmNESectionTableEntry::p_sector>;
9162};
9163template <> struct describe_field_t<SgAsmNESectionTableEntry,rose_addr_t,&SgAsmNESectionTableEntry::p_physicalSize> {
9165 using field_type = rose_addr_t;
9166 static constexpr size_t position{2};
9167 static constexpr char const * const name{"physicalSize"};
9168 static constexpr char const * const typestr{"rose_addr_t"};
9169 static constexpr bool traverse{false};
9170 static constexpr auto mbr_ptr{&SgAsmNESectionTableEntry::p_physicalSize};
9171 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9172 using bind = Desc<SgAsmNESectionTableEntry, rose_addr_t SgAsmNESectionTableEntry::*, &SgAsmNESectionTableEntry::p_physicalSize>;
9173};
9174template <> struct describe_field_t<SgAsmNESectionTableEntry,rose_addr_t,&SgAsmNESectionTableEntry::p_virtualSize> {
9176 using field_type = rose_addr_t;
9177 static constexpr size_t position{3};
9178 static constexpr char const * const name{"virtualSize"};
9179 static constexpr char const * const typestr{"rose_addr_t"};
9180 static constexpr bool traverse{false};
9181 static constexpr auto mbr_ptr{&SgAsmNESectionTableEntry::p_virtualSize};
9182 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9183 using bind = Desc<SgAsmNESectionTableEntry, rose_addr_t SgAsmNESectionTableEntry::*, &SgAsmNESectionTableEntry::p_virtualSize>;
9184};
9194template <> struct node_from_variant_t<246> { using type = SgAsmNESectionTableEntry; };
9195
9196// Class: AsmNEStringTable
9198 using node = SgAsmNEStringTable;
9199 using base = SgAsmGenericSection;
9200 static constexpr char const * const name{"AsmNEStringTable"};
9201 static constexpr unsigned long variant{247};
9202 static constexpr bool concrete{true};
9203 using subclasses_t = mp::List<>;
9204 using fields_t = mp::List<>;
9205};
9206template <> struct node_from_variant_t<247> { using type = SgAsmNEStringTable; };
9207
9208// Class: AsmNode
9209template <> struct describe_node_t<SgAsmNode> {
9210 using node = SgAsmNode;
9211 using base = SgNode;
9212 static constexpr char const * const name{"AsmNode"};
9213 static constexpr unsigned long variant{248};
9214 static constexpr bool concrete{false};
9216 using fields_t = mp::List<>;
9217};
9218template <> struct node_from_variant_t<248> { using type = SgAsmNode; };
9219
9220// Class: AsmOp
9221template <> struct describe_field_t<SgAsmOp,SgAsmOp::asm_operand_constraint_enum,&SgAsmOp::p_constraint> {
9222 using parent = SgAsmOp;
9224 static constexpr size_t position{0};
9225 static constexpr char const * const name{"constraint"};
9226 static constexpr char const * const typestr{"SgAsmOp::asm_operand_constraint_enum"};
9227 static constexpr bool traverse{false};
9228 static constexpr auto mbr_ptr{&SgAsmOp::p_constraint};
9229 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9230 using bind = Desc<SgAsmOp, SgAsmOp::asm_operand_constraint_enum SgAsmOp::*, &SgAsmOp::p_constraint>;
9231};
9232template <> struct describe_field_t<SgAsmOp,SgAsmOp::asm_operand_modifier_enum,&SgAsmOp::p_modifiers> {
9233 using parent = SgAsmOp;
9235 static constexpr size_t position{1};
9236 static constexpr char const * const name{"modifiers"};
9237 static constexpr char const * const typestr{"SgAsmOp::asm_operand_modifier_enum"};
9238 static constexpr bool traverse{false};
9239 static constexpr auto mbr_ptr{&SgAsmOp::p_modifiers};
9240 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9241 using bind = Desc<SgAsmOp, SgAsmOp::asm_operand_modifier_enum SgAsmOp::*, &SgAsmOp::p_modifiers>;
9242};
9243template <> struct describe_field_t<SgAsmOp,SgExpression*,&SgAsmOp::p_expression> {
9244 using parent = SgAsmOp;
9245 using field_type = SgExpression*;
9246 static constexpr size_t position{2};
9247 static constexpr char const * const name{"expression"};
9248 static constexpr char const * const typestr{"SgExpression*"};
9249 static constexpr bool traverse{true};
9250 static constexpr auto mbr_ptr{&SgAsmOp::p_expression};
9251 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9252 using bind = Desc<SgAsmOp, SgExpression* SgAsmOp::*, &SgAsmOp::p_expression>;
9253};
9254template <> struct describe_field_t<SgAsmOp,bool,&SgAsmOp::p_recordRawAsmOperandDescriptions> {
9255 using parent = SgAsmOp;
9256 using field_type = bool;
9257 static constexpr size_t position{3};
9258 static constexpr char const * const name{"recordRawAsmOperandDescriptions"};
9259 static constexpr char const * const typestr{"bool"};
9260 static constexpr bool traverse{false};
9261 static constexpr auto mbr_ptr{&SgAsmOp::p_recordRawAsmOperandDescriptions};
9262 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9263 using bind = Desc<SgAsmOp, bool SgAsmOp::*, &SgAsmOp::p_recordRawAsmOperandDescriptions>;
9264};
9265template <> struct describe_field_t<SgAsmOp,bool,&SgAsmOp::p_isOutputOperand> {
9266 using parent = SgAsmOp;
9267 using field_type = bool;
9268 static constexpr size_t position{4};
9269 static constexpr char const * const name{"isOutputOperand"};
9270 static constexpr char const * const typestr{"bool"};
9271 static constexpr bool traverse{false};
9272 static constexpr auto mbr_ptr{&SgAsmOp::p_isOutputOperand};
9273 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9274 using bind = Desc<SgAsmOp, bool SgAsmOp::*, &SgAsmOp::p_isOutputOperand>;
9275};
9276template <> struct describe_field_t<SgAsmOp,std::string,&SgAsmOp::p_constraintString> {
9277 using parent = SgAsmOp;
9278 using field_type = std::string;
9279 static constexpr size_t position{5};
9280 static constexpr char const * const name{"constraintString"};
9281 static constexpr char const * const typestr{"std::string"};
9282 static constexpr bool traverse{false};
9283 static constexpr auto mbr_ptr{&SgAsmOp::p_constraintString};
9284 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9285 using bind = Desc<SgAsmOp, std::string SgAsmOp::*, &SgAsmOp::p_constraintString>;
9286};
9287template <> struct describe_field_t<SgAsmOp,std::string,&SgAsmOp::p_name> {
9288 using parent = SgAsmOp;
9289 using field_type = std::string;
9290 static constexpr size_t position{6};
9291 static constexpr char const * const name{"name"};
9292 static constexpr char const * const typestr{"std::string"};
9293 static constexpr bool traverse{false};
9294 static constexpr auto mbr_ptr{&SgAsmOp::p_name};
9295 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9296 using bind = Desc<SgAsmOp, std::string SgAsmOp::*, &SgAsmOp::p_name>;
9297};
9307template <> struct node_from_variant_t<249> { using type = SgAsmOp; };
9308
9309// Class: AsmOperandList
9310template <> struct describe_field_t<SgAsmOperandList,SgAsmExpressionPtrList,&SgAsmOperandList::p_operands> {
9311 using parent = SgAsmOperandList;
9312 using field_type = SgAsmExpressionPtrList;
9313 static constexpr size_t position{0};
9314 static constexpr char const * const name{"operands"};
9315 static constexpr char const * const typestr{"SgAsmExpressionPtrList"};
9316 static constexpr bool traverse{true};
9317 static constexpr auto mbr_ptr{&SgAsmOperandList::p_operands};
9318 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9319 using bind = Desc<SgAsmOperandList, SgAsmExpressionPtrList SgAsmOperandList::*, &SgAsmOperandList::p_operands>;
9320};
9322 using node = SgAsmOperandList;
9323 using base = SgAsmNode;
9324 static constexpr char const * const name{"AsmOperandList"};
9325 static constexpr unsigned long variant{250};
9326 static constexpr bool concrete{true};
9327 using subclasses_t = mp::List<>;
9329};
9330template <> struct node_from_variant_t<250> { using type = SgAsmOperandList; };
9331
9332// Class: AsmPEExportDirectory
9333template <> struct describe_field_t<SgAsmPEExportDirectory,unsigned,&SgAsmPEExportDirectory::p_res1> {
9335 using field_type = unsigned;
9336 static constexpr size_t position{0};
9337 static constexpr char const * const name{"res1"};
9338 static constexpr char const * const typestr{"unsigned"};
9339 static constexpr bool traverse{false};
9340 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_res1};
9341 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9342 using bind = Desc<SgAsmPEExportDirectory, unsigned SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_res1>;
9343};
9344template <> struct describe_field_t<SgAsmPEExportDirectory,time_t,&SgAsmPEExportDirectory::p_timestamp> {
9346 using field_type = time_t;
9347 static constexpr size_t position{1};
9348 static constexpr char const * const name{"timestamp"};
9349 static constexpr char const * const typestr{"time_t"};
9350 static constexpr bool traverse{false};
9351 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_timestamp};
9352 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9353 using bind = Desc<SgAsmPEExportDirectory, time_t SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_timestamp>;
9354};
9355template <> struct describe_field_t<SgAsmPEExportDirectory,unsigned,&SgAsmPEExportDirectory::p_vmajor> {
9357 using field_type = unsigned;
9358 static constexpr size_t position{2};
9359 static constexpr char const * const name{"vmajor"};
9360 static constexpr char const * const typestr{"unsigned"};
9361 static constexpr bool traverse{false};
9362 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_vmajor};
9363 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9364 using bind = Desc<SgAsmPEExportDirectory, unsigned SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_vmajor>;
9365};
9366template <> struct describe_field_t<SgAsmPEExportDirectory,unsigned,&SgAsmPEExportDirectory::p_vminor> {
9368 using field_type = unsigned;
9369 static constexpr size_t position{3};
9370 static constexpr char const * const name{"vminor"};
9371 static constexpr char const * const typestr{"unsigned"};
9372 static constexpr bool traverse{false};
9373 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_vminor};
9374 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9375 using bind = Desc<SgAsmPEExportDirectory, unsigned SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_vminor>;
9376};
9377template <> struct describe_field_t<SgAsmPEExportDirectory,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEExportDirectory::p_name_rva> {
9380 static constexpr size_t position{4};
9381 static constexpr char const * const name{"name_rva"};
9382 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
9383 static constexpr bool traverse{false};
9384 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_name_rva};
9385 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9386 using bind = Desc<SgAsmPEExportDirectory, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_name_rva>;
9387};
9388template <> struct describe_field_t<SgAsmPEExportDirectory,unsigned,&SgAsmPEExportDirectory::p_ord_base> {
9390 using field_type = unsigned;
9391 static constexpr size_t position{5};
9392 static constexpr char const * const name{"ord_base"};
9393 static constexpr char const * const typestr{"unsigned"};
9394 static constexpr bool traverse{false};
9395 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_ord_base};
9396 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9397 using bind = Desc<SgAsmPEExportDirectory, unsigned SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_ord_base>;
9398};
9399template <> struct describe_field_t<SgAsmPEExportDirectory,size_t,&SgAsmPEExportDirectory::p_expaddr_n> {
9401 using field_type = size_t;
9402 static constexpr size_t position{6};
9403 static constexpr char const * const name{"expaddr_n"};
9404 static constexpr char const * const typestr{"size_t"};
9405 static constexpr bool traverse{false};
9406 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_expaddr_n};
9407 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9408 using bind = Desc<SgAsmPEExportDirectory, size_t SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_expaddr_n>;
9409};
9410template <> struct describe_field_t<SgAsmPEExportDirectory,size_t,&SgAsmPEExportDirectory::p_nameptr_n> {
9412 using field_type = size_t;
9413 static constexpr size_t position{7};
9414 static constexpr char const * const name{"nameptr_n"};
9415 static constexpr char const * const typestr{"size_t"};
9416 static constexpr bool traverse{false};
9417 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_nameptr_n};
9418 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9419 using bind = Desc<SgAsmPEExportDirectory, size_t SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_nameptr_n>;
9420};
9421template <> struct describe_field_t<SgAsmPEExportDirectory,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEExportDirectory::p_expaddr_rva> {
9424 static constexpr size_t position{8};
9425 static constexpr char const * const name{"expaddr_rva"};
9426 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
9427 static constexpr bool traverse{false};
9428 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_expaddr_rva};
9429 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9430 using bind = Desc<SgAsmPEExportDirectory, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_expaddr_rva>;
9431};
9432template <> struct describe_field_t<SgAsmPEExportDirectory,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEExportDirectory::p_nameptr_rva> {
9435 static constexpr size_t position{9};
9436 static constexpr char const * const name{"nameptr_rva"};
9437 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
9438 static constexpr bool traverse{false};
9439 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_nameptr_rva};
9440 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9441 using bind = Desc<SgAsmPEExportDirectory, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_nameptr_rva>;
9442};
9443template <> struct describe_field_t<SgAsmPEExportDirectory,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEExportDirectory::p_ordinals_rva> {
9446 static constexpr size_t position{10};
9447 static constexpr char const * const name{"ordinals_rva"};
9448 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
9449 static constexpr bool traverse{false};
9450 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_ordinals_rva};
9451 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9452 using bind = Desc<SgAsmPEExportDirectory, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_ordinals_rva>;
9453};
9454template <> struct describe_field_t<SgAsmPEExportDirectory,SgAsmGenericString*,&SgAsmPEExportDirectory::p_name> {
9457 static constexpr size_t position{11};
9458 static constexpr char const * const name{"name"};
9459 static constexpr char const * const typestr{"SgAsmGenericString*"};
9460 static constexpr bool traverse{true};
9461 static constexpr auto mbr_ptr{&SgAsmPEExportDirectory::p_name};
9462 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9463 using bind = Desc<SgAsmPEExportDirectory, SgAsmGenericString* SgAsmPEExportDirectory::*, &SgAsmPEExportDirectory::p_name>;
9464};
9468 static constexpr char const * const name{"AsmPEExportDirectory"};
9469 static constexpr unsigned long variant{251};
9470 static constexpr bool concrete{true};
9471 using subclasses_t = mp::List<>;
9473};
9474template <> struct node_from_variant_t<251> { using type = SgAsmPEExportDirectory; };
9475
9476// Class: AsmPEExportEntry
9477template <> struct describe_field_t<SgAsmPEExportEntry,SgAsmGenericString*,&SgAsmPEExportEntry::p_name> {
9478 using parent = SgAsmPEExportEntry;
9480 static constexpr size_t position{0};
9481 static constexpr char const * const name{"name"};
9482 static constexpr char const * const typestr{"SgAsmGenericString*"};
9483 static constexpr bool traverse{true};
9484 static constexpr auto mbr_ptr{&SgAsmPEExportEntry::p_name};
9485 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9486 using bind = Desc<SgAsmPEExportEntry, SgAsmGenericString* SgAsmPEExportEntry::*, &SgAsmPEExportEntry::p_name>;
9487};
9488template <> struct describe_field_t<SgAsmPEExportEntry,unsigned,&SgAsmPEExportEntry::p_ordinal> {
9489 using parent = SgAsmPEExportEntry;
9490 using field_type = unsigned;
9491 static constexpr size_t position{1};
9492 static constexpr char const * const name{"ordinal"};
9493 static constexpr char const * const typestr{"unsigned"};
9494 static constexpr bool traverse{false};
9495 static constexpr auto mbr_ptr{&SgAsmPEExportEntry::p_ordinal};
9496 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9497 using bind = Desc<SgAsmPEExportEntry, unsigned SgAsmPEExportEntry::*, &SgAsmPEExportEntry::p_ordinal>;
9498};
9499template <> struct describe_field_t<SgAsmPEExportEntry,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEExportEntry::p_exportRva> {
9500 using parent = SgAsmPEExportEntry;
9502 static constexpr size_t position{2};
9503 static constexpr char const * const name{"exportRva"};
9504 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
9505 static constexpr bool traverse{false};
9506 static constexpr auto mbr_ptr{&SgAsmPEExportEntry::p_exportRva};
9507 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9508 using bind = Desc<SgAsmPEExportEntry, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEExportEntry::*, &SgAsmPEExportEntry::p_exportRva>;
9509};
9510template <> struct describe_field_t<SgAsmPEExportEntry,SgAsmGenericString*,&SgAsmPEExportEntry::p_forwarder> {
9511 using parent = SgAsmPEExportEntry;
9513 static constexpr size_t position{3};
9514 static constexpr char const * const name{"forwarder"};
9515 static constexpr char const * const typestr{"SgAsmGenericString*"};
9516 static constexpr bool traverse{true};
9517 static constexpr auto mbr_ptr{&SgAsmPEExportEntry::p_forwarder};
9518 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9519 using bind = Desc<SgAsmPEExportEntry, SgAsmGenericString* SgAsmPEExportEntry::*, &SgAsmPEExportEntry::p_forwarder>;
9520};
9530template <> struct node_from_variant_t<252> { using type = SgAsmPEExportEntry; };
9531
9532// Class: AsmPEExportEntryList
9533template <> struct describe_field_t<SgAsmPEExportEntryList,SgAsmPEExportEntryPtrList,&SgAsmPEExportEntryList::p_exports> {
9535 using field_type = SgAsmPEExportEntryPtrList;
9536 static constexpr size_t position{0};
9537 static constexpr char const * const name{"exports"};
9538 static constexpr char const * const typestr{"SgAsmPEExportEntryPtrList"};
9539 static constexpr bool traverse{true};
9540 static constexpr auto mbr_ptr{&SgAsmPEExportEntryList::p_exports};
9541 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9542 using bind = Desc<SgAsmPEExportEntryList, SgAsmPEExportEntryPtrList SgAsmPEExportEntryList::*, &SgAsmPEExportEntryList::p_exports>;
9543};
9547 static constexpr char const * const name{"AsmPEExportEntryList"};
9548 static constexpr unsigned long variant{253};
9549 static constexpr bool concrete{true};
9550 using subclasses_t = mp::List<>;
9552};
9553template <> struct node_from_variant_t<253> { using type = SgAsmPEExportEntryList; };
9554
9555// Class: AsmPEExportSection
9556template <> struct describe_field_t<SgAsmPEExportSection,SgAsmPEExportDirectory*,&SgAsmPEExportSection::p_exportDirectory> {
9559 static constexpr size_t position{0};
9560 static constexpr char const * const name{"exportDirectory"};
9561 static constexpr char const * const typestr{"SgAsmPEExportDirectory*"};
9562 static constexpr bool traverse{true};
9563 static constexpr auto mbr_ptr{&SgAsmPEExportSection::p_exportDirectory};
9564 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9565 using bind = Desc<SgAsmPEExportSection, SgAsmPEExportDirectory* SgAsmPEExportSection::*, &SgAsmPEExportSection::p_exportDirectory>;
9566};
9567template <> struct describe_field_t<SgAsmPEExportSection,SgAsmPEExportEntryList*,&SgAsmPEExportSection::p_exports> {
9570 static constexpr size_t position{1};
9571 static constexpr char const * const name{"exports"};
9572 static constexpr char const * const typestr{"SgAsmPEExportEntryList*"};
9573 static constexpr bool traverse{true};
9574 static constexpr auto mbr_ptr{&SgAsmPEExportSection::p_exports};
9575 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9576 using bind = Desc<SgAsmPEExportSection, SgAsmPEExportEntryList* SgAsmPEExportSection::*, &SgAsmPEExportSection::p_exports>;
9577};
9579 using node = SgAsmPEExportSection;
9580 using base = SgAsmPESection;
9581 static constexpr char const * const name{"AsmPEExportSection"};
9582 static constexpr unsigned long variant{254};
9583 static constexpr bool concrete{true};
9584 using subclasses_t = mp::List<>;
9586};
9587template <> struct node_from_variant_t<254> { using type = SgAsmPEExportSection; };
9588
9589// Class: AsmPEFileHeader
9590template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_cpu_type> {
9591 using parent = SgAsmPEFileHeader;
9592 using field_type = unsigned;
9593 static constexpr size_t position{0};
9594 static constexpr char const * const name{"e_cpu_type"};
9595 static constexpr char const * const typestr{"unsigned"};
9596 static constexpr bool traverse{false};
9597 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_cpu_type};
9598 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9599 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_cpu_type>;
9600};
9601template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_nsections> {
9602 using parent = SgAsmPEFileHeader;
9603 using field_type = unsigned;
9604 static constexpr size_t position{1};
9605 static constexpr char const * const name{"e_nsections"};
9606 static constexpr char const * const typestr{"unsigned"};
9607 static constexpr bool traverse{false};
9608 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_nsections};
9609 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9610 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_nsections>;
9611};
9612template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_time> {
9613 using parent = SgAsmPEFileHeader;
9614 using field_type = unsigned;
9615 static constexpr size_t position{2};
9616 static constexpr char const * const name{"e_time"};
9617 static constexpr char const * const typestr{"unsigned"};
9618 static constexpr bool traverse{false};
9619 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_time};
9620 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9621 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_time>;
9622};
9623template <> struct describe_field_t<SgAsmPEFileHeader,rose_addr_t,&SgAsmPEFileHeader::p_e_coff_symtab> {
9624 using parent = SgAsmPEFileHeader;
9625 using field_type = rose_addr_t;
9626 static constexpr size_t position{3};
9627 static constexpr char const * const name{"e_coff_symtab"};
9628 static constexpr char const * const typestr{"rose_addr_t"};
9629 static constexpr bool traverse{false};
9630 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_coff_symtab};
9631 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9632 using bind = Desc<SgAsmPEFileHeader, rose_addr_t SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_coff_symtab>;
9633};
9634template <> struct describe_field_t<SgAsmPEFileHeader,rose_addr_t,&SgAsmPEFileHeader::p_e_nt_hdr_size> {
9635 using parent = SgAsmPEFileHeader;
9636 using field_type = rose_addr_t;
9637 static constexpr size_t position{4};
9638 static constexpr char const * const name{"e_nt_hdr_size"};
9639 static constexpr char const * const typestr{"rose_addr_t"};
9640 static constexpr bool traverse{false};
9641 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_nt_hdr_size};
9642 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9643 using bind = Desc<SgAsmPEFileHeader, rose_addr_t SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_nt_hdr_size>;
9644};
9645template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_coff_nsyms> {
9646 using parent = SgAsmPEFileHeader;
9647 using field_type = unsigned;
9648 static constexpr size_t position{5};
9649 static constexpr char const * const name{"e_coff_nsyms"};
9650 static constexpr char const * const typestr{"unsigned"};
9651 static constexpr bool traverse{false};
9652 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_coff_nsyms};
9653 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9654 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_coff_nsyms>;
9655};
9656template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_flags> {
9657 using parent = SgAsmPEFileHeader;
9658 using field_type = unsigned;
9659 static constexpr size_t position{6};
9660 static constexpr char const * const name{"e_flags"};
9661 static constexpr char const * const typestr{"unsigned"};
9662 static constexpr bool traverse{false};
9663 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_flags};
9664 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9665 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_flags>;
9666};
9667template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_opt_magic> {
9668 using parent = SgAsmPEFileHeader;
9669 using field_type = unsigned;
9670 static constexpr size_t position{7};
9671 static constexpr char const * const name{"e_opt_magic"};
9672 static constexpr char const * const typestr{"unsigned"};
9673 static constexpr bool traverse{false};
9674 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_opt_magic};
9675 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9676 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_opt_magic>;
9677};
9678template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_lmajor> {
9679 using parent = SgAsmPEFileHeader;
9680 using field_type = unsigned;
9681 static constexpr size_t position{8};
9682 static constexpr char const * const name{"e_lmajor"};
9683 static constexpr char const * const typestr{"unsigned"};
9684 static constexpr bool traverse{false};
9685 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_lmajor};
9686 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9687 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_lmajor>;
9688};
9689template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_lminor> {
9690 using parent = SgAsmPEFileHeader;
9691 using field_type = unsigned;
9692 static constexpr size_t position{9};
9693 static constexpr char const * const name{"e_lminor"};
9694 static constexpr char const * const typestr{"unsigned"};
9695 static constexpr bool traverse{false};
9696 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_lminor};
9697 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9698 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_lminor>;
9699};
9700template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_code_size> {
9701 using parent = SgAsmPEFileHeader;
9702 using field_type = unsigned;
9703 static constexpr size_t position{10};
9704 static constexpr char const * const name{"e_code_size"};
9705 static constexpr char const * const typestr{"unsigned"};
9706 static constexpr bool traverse{false};
9707 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_code_size};
9708 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9709 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_code_size>;
9710};
9711template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_data_size> {
9712 using parent = SgAsmPEFileHeader;
9713 using field_type = unsigned;
9714 static constexpr size_t position{11};
9715 static constexpr char const * const name{"e_data_size"};
9716 static constexpr char const * const typestr{"unsigned"};
9717 static constexpr bool traverse{false};
9718 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_data_size};
9719 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9720 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_data_size>;
9721};
9722template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_bss_size> {
9723 using parent = SgAsmPEFileHeader;
9724 using field_type = unsigned;
9725 static constexpr size_t position{12};
9726 static constexpr char const * const name{"e_bss_size"};
9727 static constexpr char const * const typestr{"unsigned"};
9728 static constexpr bool traverse{false};
9729 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_bss_size};
9730 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9731 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_bss_size>;
9732};
9733template <> struct describe_field_t<SgAsmPEFileHeader,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEFileHeader::p_e_code_rva> {
9734 using parent = SgAsmPEFileHeader;
9736 static constexpr size_t position{13};
9737 static constexpr char const * const name{"e_code_rva"};
9738 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
9739 static constexpr bool traverse{false};
9740 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_code_rva};
9741 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9742 using bind = Desc<SgAsmPEFileHeader, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_code_rva>;
9743};
9744template <> struct describe_field_t<SgAsmPEFileHeader,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEFileHeader::p_e_data_rva> {
9745 using parent = SgAsmPEFileHeader;
9747 static constexpr size_t position{14};
9748 static constexpr char const * const name{"e_data_rva"};
9749 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
9750 static constexpr bool traverse{false};
9751 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_data_rva};
9752 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9753 using bind = Desc<SgAsmPEFileHeader, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_data_rva>;
9754};
9755template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_section_align> {
9756 using parent = SgAsmPEFileHeader;
9757 using field_type = unsigned;
9758 static constexpr size_t position{15};
9759 static constexpr char const * const name{"e_section_align"};
9760 static constexpr char const * const typestr{"unsigned"};
9761 static constexpr bool traverse{false};
9762 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_section_align};
9763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9764 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_section_align>;
9765};
9766template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_file_align> {
9767 using parent = SgAsmPEFileHeader;
9768 using field_type = unsigned;
9769 static constexpr size_t position{16};
9770 static constexpr char const * const name{"e_file_align"};
9771 static constexpr char const * const typestr{"unsigned"};
9772 static constexpr bool traverse{false};
9773 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_file_align};
9774 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9775 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_file_align>;
9776};
9777template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_os_major> {
9778 using parent = SgAsmPEFileHeader;
9779 using field_type = unsigned;
9780 static constexpr size_t position{17};
9781 static constexpr char const * const name{"e_os_major"};
9782 static constexpr char const * const typestr{"unsigned"};
9783 static constexpr bool traverse{false};
9784 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_os_major};
9785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9786 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_os_major>;
9787};
9788template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_os_minor> {
9789 using parent = SgAsmPEFileHeader;
9790 using field_type = unsigned;
9791 static constexpr size_t position{18};
9792 static constexpr char const * const name{"e_os_minor"};
9793 static constexpr char const * const typestr{"unsigned"};
9794 static constexpr bool traverse{false};
9795 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_os_minor};
9796 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9797 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_os_minor>;
9798};
9799template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_user_major> {
9800 using parent = SgAsmPEFileHeader;
9801 using field_type = unsigned;
9802 static constexpr size_t position{19};
9803 static constexpr char const * const name{"e_user_major"};
9804 static constexpr char const * const typestr{"unsigned"};
9805 static constexpr bool traverse{false};
9806 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_user_major};
9807 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9808 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_user_major>;
9809};
9810template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_user_minor> {
9811 using parent = SgAsmPEFileHeader;
9812 using field_type = unsigned;
9813 static constexpr size_t position{20};
9814 static constexpr char const * const name{"e_user_minor"};
9815 static constexpr char const * const typestr{"unsigned"};
9816 static constexpr bool traverse{false};
9817 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_user_minor};
9818 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9819 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_user_minor>;
9820};
9821template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_subsys_major> {
9822 using parent = SgAsmPEFileHeader;
9823 using field_type = unsigned;
9824 static constexpr size_t position{21};
9825 static constexpr char const * const name{"e_subsys_major"};
9826 static constexpr char const * const typestr{"unsigned"};
9827 static constexpr bool traverse{false};
9828 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_subsys_major};
9829 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9830 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_subsys_major>;
9831};
9832template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_subsys_minor> {
9833 using parent = SgAsmPEFileHeader;
9834 using field_type = unsigned;
9835 static constexpr size_t position{22};
9836 static constexpr char const * const name{"e_subsys_minor"};
9837 static constexpr char const * const typestr{"unsigned"};
9838 static constexpr bool traverse{false};
9839 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_subsys_minor};
9840 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9841 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_subsys_minor>;
9842};
9843template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_reserved9> {
9844 using parent = SgAsmPEFileHeader;
9845 using field_type = unsigned;
9846 static constexpr size_t position{23};
9847 static constexpr char const * const name{"e_reserved9"};
9848 static constexpr char const * const typestr{"unsigned"};
9849 static constexpr bool traverse{false};
9850 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_reserved9};
9851 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9852 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_reserved9>;
9853};
9854template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_image_size> {
9855 using parent = SgAsmPEFileHeader;
9856 using field_type = unsigned;
9857 static constexpr size_t position{24};
9858 static constexpr char const * const name{"e_image_size"};
9859 static constexpr char const * const typestr{"unsigned"};
9860 static constexpr bool traverse{false};
9861 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_image_size};
9862 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9863 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_image_size>;
9864};
9865template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_header_size> {
9866 using parent = SgAsmPEFileHeader;
9867 using field_type = unsigned;
9868 static constexpr size_t position{25};
9869 static constexpr char const * const name{"e_header_size"};
9870 static constexpr char const * const typestr{"unsigned"};
9871 static constexpr bool traverse{false};
9872 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_header_size};
9873 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9874 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_header_size>;
9875};
9876template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_file_checksum> {
9877 using parent = SgAsmPEFileHeader;
9878 using field_type = unsigned;
9879 static constexpr size_t position{26};
9880 static constexpr char const * const name{"e_file_checksum"};
9881 static constexpr char const * const typestr{"unsigned"};
9882 static constexpr bool traverse{false};
9883 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_file_checksum};
9884 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9885 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_file_checksum>;
9886};
9887template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_subsystem> {
9888 using parent = SgAsmPEFileHeader;
9889 using field_type = unsigned;
9890 static constexpr size_t position{27};
9891 static constexpr char const * const name{"e_subsystem"};
9892 static constexpr char const * const typestr{"unsigned"};
9893 static constexpr bool traverse{false};
9894 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_subsystem};
9895 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9896 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_subsystem>;
9897};
9898template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_dll_flags> {
9899 using parent = SgAsmPEFileHeader;
9900 using field_type = unsigned;
9901 static constexpr size_t position{28};
9902 static constexpr char const * const name{"e_dll_flags"};
9903 static constexpr char const * const typestr{"unsigned"};
9904 static constexpr bool traverse{false};
9905 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_dll_flags};
9906 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9907 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_dll_flags>;
9908};
9909template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_stack_reserve_size> {
9910 using parent = SgAsmPEFileHeader;
9911 using field_type = unsigned;
9912 static constexpr size_t position{29};
9913 static constexpr char const * const name{"e_stack_reserve_size"};
9914 static constexpr char const * const typestr{"unsigned"};
9915 static constexpr bool traverse{false};
9916 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_stack_reserve_size};
9917 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9918 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_stack_reserve_size>;
9919};
9920template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_stack_commit_size> {
9921 using parent = SgAsmPEFileHeader;
9922 using field_type = unsigned;
9923 static constexpr size_t position{30};
9924 static constexpr char const * const name{"e_stack_commit_size"};
9925 static constexpr char const * const typestr{"unsigned"};
9926 static constexpr bool traverse{false};
9927 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_stack_commit_size};
9928 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9929 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_stack_commit_size>;
9930};
9931template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_heap_reserve_size> {
9932 using parent = SgAsmPEFileHeader;
9933 using field_type = unsigned;
9934 static constexpr size_t position{31};
9935 static constexpr char const * const name{"e_heap_reserve_size"};
9936 static constexpr char const * const typestr{"unsigned"};
9937 static constexpr bool traverse{false};
9938 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_heap_reserve_size};
9939 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9940 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_heap_reserve_size>;
9941};
9942template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_heap_commit_size> {
9943 using parent = SgAsmPEFileHeader;
9944 using field_type = unsigned;
9945 static constexpr size_t position{32};
9946 static constexpr char const * const name{"e_heap_commit_size"};
9947 static constexpr char const * const typestr{"unsigned"};
9948 static constexpr bool traverse{false};
9949 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_heap_commit_size};
9950 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9951 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_heap_commit_size>;
9952};
9953template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_loader_flags> {
9954 using parent = SgAsmPEFileHeader;
9955 using field_type = unsigned;
9956 static constexpr size_t position{33};
9957 static constexpr char const * const name{"e_loader_flags"};
9958 static constexpr char const * const typestr{"unsigned"};
9959 static constexpr bool traverse{false};
9960 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_loader_flags};
9961 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9962 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_loader_flags>;
9963};
9964template <> struct describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_num_rvasize_pairs> {
9965 using parent = SgAsmPEFileHeader;
9966 using field_type = unsigned;
9967 static constexpr size_t position{34};
9968 static constexpr char const * const name{"e_num_rvasize_pairs"};
9969 static constexpr char const * const typestr{"unsigned"};
9970 static constexpr bool traverse{false};
9971 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_e_num_rvasize_pairs};
9972 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9973 using bind = Desc<SgAsmPEFileHeader, unsigned SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_e_num_rvasize_pairs>;
9974};
9975template <> struct describe_field_t<SgAsmPEFileHeader,SgAsmPERVASizePairList*,&SgAsmPEFileHeader::p_rvaSizePairs> {
9976 using parent = SgAsmPEFileHeader;
9978 static constexpr size_t position{35};
9979 static constexpr char const * const name{"rvaSizePairs"};
9980 static constexpr char const * const typestr{"SgAsmPERVASizePairList*"};
9981 static constexpr bool traverse{true};
9982 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_rvaSizePairs};
9983 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9984 using bind = Desc<SgAsmPEFileHeader, SgAsmPERVASizePairList* SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_rvaSizePairs>;
9985};
9986template <> struct describe_field_t<SgAsmPEFileHeader,SgAsmPESectionTable*,&SgAsmPEFileHeader::p_sectionTable> {
9987 using parent = SgAsmPEFileHeader;
9989 static constexpr size_t position{36};
9990 static constexpr char const * const name{"sectionTable"};
9991 static constexpr char const * const typestr{"SgAsmPESectionTable*"};
9992 static constexpr bool traverse{false};
9993 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_sectionTable};
9994 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
9995 using bind = Desc<SgAsmPEFileHeader, SgAsmPESectionTable* SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_sectionTable>;
9996};
9997template <> struct describe_field_t<SgAsmPEFileHeader,SgAsmCoffSymbolTable*,&SgAsmPEFileHeader::p_coffSymbolTable> {
9998 using parent = SgAsmPEFileHeader;
10000 static constexpr size_t position{37};
10001 static constexpr char const * const name{"coffSymbolTable"};
10002 static constexpr char const * const typestr{"SgAsmCoffSymbolTable*"};
10003 static constexpr bool traverse{false};
10004 static constexpr auto mbr_ptr{&SgAsmPEFileHeader::p_coffSymbolTable};
10005 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10006 using bind = Desc<SgAsmPEFileHeader, SgAsmCoffSymbolTable* SgAsmPEFileHeader::*, &SgAsmPEFileHeader::p_coffSymbolTable>;
10007};
10009 using node = SgAsmPEFileHeader;
10010 using base = SgAsmGenericHeader;
10011 static constexpr char const * const name{"AsmPEFileHeader"};
10012 static constexpr unsigned long variant{255};
10013 static constexpr bool concrete{true};
10014 using subclasses_t = mp::List<>;
10015 using fields_t = mp::List<describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_cpu_type>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_nsections>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_time>, describe_field_t<SgAsmPEFileHeader,rose_addr_t,&SgAsmPEFileHeader::p_e_coff_symtab>, describe_field_t<SgAsmPEFileHeader,rose_addr_t,&SgAsmPEFileHeader::p_e_nt_hdr_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_coff_nsyms>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_flags>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_opt_magic>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_lmajor>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_lminor>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_code_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_data_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_bss_size>, describe_field_t<SgAsmPEFileHeader,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEFileHeader::p_e_code_rva>, describe_field_t<SgAsmPEFileHeader,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEFileHeader::p_e_data_rva>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_section_align>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_file_align>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_os_major>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_os_minor>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_user_major>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_user_minor>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_subsys_major>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_subsys_minor>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_reserved9>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_image_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_header_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_file_checksum>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_subsystem>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_dll_flags>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_stack_reserve_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_stack_commit_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_heap_reserve_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_heap_commit_size>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_loader_flags>, describe_field_t<SgAsmPEFileHeader,unsigned,&SgAsmPEFileHeader::p_e_num_rvasize_pairs>, describe_field_t<SgAsmPEFileHeader,SgAsmPERVASizePairList*,&SgAsmPEFileHeader::p_rvaSizePairs>, describe_field_t<SgAsmPEFileHeader,SgAsmPESectionTable*,&SgAsmPEFileHeader::p_sectionTable>, describe_field_t<SgAsmPEFileHeader,SgAsmCoffSymbolTable*,&SgAsmPEFileHeader::p_coffSymbolTable>>;
10016};
10017template <> struct node_from_variant_t<255> { using type = SgAsmPEFileHeader; };
10018
10019// Class: AsmPEImportDirectory
10020template <> struct describe_field_t<SgAsmPEImportDirectory,SgAsmGenericString*,&SgAsmPEImportDirectory::p_dllName> {
10023 static constexpr size_t position{0};
10024 static constexpr char const * const name{"dllName"};
10025 static constexpr char const * const typestr{"SgAsmGenericString*"};
10026 static constexpr bool traverse{true};
10027 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_dllName};
10028 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10029 using bind = Desc<SgAsmPEImportDirectory, SgAsmGenericString* SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_dllName>;
10030};
10031template <> struct describe_field_t<SgAsmPEImportDirectory,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEImportDirectory::p_dllNameRva> {
10034 static constexpr size_t position{1};
10035 static constexpr char const * const name{"dllNameRva"};
10036 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
10037 static constexpr bool traverse{false};
10038 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_dllNameRva};
10039 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10040 using bind = Desc<SgAsmPEImportDirectory, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_dllNameRva>;
10041};
10042template <> struct describe_field_t<SgAsmPEImportDirectory,size_t,&SgAsmPEImportDirectory::p_dll_name_nalloc> {
10044 using field_type = size_t;
10045 static constexpr size_t position{2};
10046 static constexpr char const * const name{"dll_name_nalloc"};
10047 static constexpr char const * const typestr{"size_t"};
10048 static constexpr bool traverse{false};
10049 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_dll_name_nalloc};
10050 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10051 using bind = Desc<SgAsmPEImportDirectory, size_t SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_dll_name_nalloc>;
10052};
10053template <> struct describe_field_t<SgAsmPEImportDirectory,time_t,&SgAsmPEImportDirectory::p_time> {
10055 using field_type = time_t;
10056 static constexpr size_t position{3};
10057 static constexpr char const * const name{"time"};
10058 static constexpr char const * const typestr{"time_t"};
10059 static constexpr bool traverse{false};
10060 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_time};
10061 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10062 using bind = Desc<SgAsmPEImportDirectory, time_t SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_time>;
10063};
10064template <> struct describe_field_t<SgAsmPEImportDirectory,unsigned,&SgAsmPEImportDirectory::p_forwarder_chain> {
10066 using field_type = unsigned;
10067 static constexpr size_t position{4};
10068 static constexpr char const * const name{"forwarder_chain"};
10069 static constexpr char const * const typestr{"unsigned"};
10070 static constexpr bool traverse{false};
10071 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_forwarder_chain};
10072 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10073 using bind = Desc<SgAsmPEImportDirectory, unsigned SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_forwarder_chain>;
10074};
10075template <> struct describe_field_t<SgAsmPEImportDirectory,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEImportDirectory::p_ilt_rva> {
10078 static constexpr size_t position{5};
10079 static constexpr char const * const name{"ilt_rva"};
10080 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
10081 static constexpr bool traverse{false};
10082 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_ilt_rva};
10083 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10084 using bind = Desc<SgAsmPEImportDirectory, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_ilt_rva>;
10085};
10086template <> struct describe_field_t<SgAsmPEImportDirectory,size_t,&SgAsmPEImportDirectory::p_ilt_nalloc> {
10088 using field_type = size_t;
10089 static constexpr size_t position{6};
10090 static constexpr char const * const name{"ilt_nalloc"};
10091 static constexpr char const * const typestr{"size_t"};
10092 static constexpr bool traverse{false};
10093 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_ilt_nalloc};
10094 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10095 using bind = Desc<SgAsmPEImportDirectory, size_t SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_ilt_nalloc>;
10096};
10097template <> struct describe_field_t<SgAsmPEImportDirectory,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEImportDirectory::p_iat_rva> {
10100 static constexpr size_t position{7};
10101 static constexpr char const * const name{"iat_rva"};
10102 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
10103 static constexpr bool traverse{false};
10104 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_iat_rva};
10105 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10106 using bind = Desc<SgAsmPEImportDirectory, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_iat_rva>;
10107};
10108template <> struct describe_field_t<SgAsmPEImportDirectory,size_t,&SgAsmPEImportDirectory::p_iat_nalloc> {
10110 using field_type = size_t;
10111 static constexpr size_t position{8};
10112 static constexpr char const * const name{"iat_nalloc"};
10113 static constexpr char const * const typestr{"size_t"};
10114 static constexpr bool traverse{false};
10115 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_iat_nalloc};
10116 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10117 using bind = Desc<SgAsmPEImportDirectory, size_t SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_iat_nalloc>;
10118};
10119template <> struct describe_field_t<SgAsmPEImportDirectory,SgAsmPEImportItemList*,&SgAsmPEImportDirectory::p_imports> {
10122 static constexpr size_t position{9};
10123 static constexpr char const * const name{"imports"};
10124 static constexpr char const * const typestr{"SgAsmPEImportItemList*"};
10125 static constexpr bool traverse{true};
10126 static constexpr auto mbr_ptr{&SgAsmPEImportDirectory::p_imports};
10127 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10128 using bind = Desc<SgAsmPEImportDirectory, SgAsmPEImportItemList* SgAsmPEImportDirectory::*, &SgAsmPEImportDirectory::p_imports>;
10129};
10139template <> struct node_from_variant_t<256> { using type = SgAsmPEImportDirectory; };
10140
10141// Class: AsmPEImportDirectoryList
10142template <> struct describe_field_t<SgAsmPEImportDirectoryList,SgAsmPEImportDirectoryPtrList,&SgAsmPEImportDirectoryList::p_vector> {
10144 using field_type = SgAsmPEImportDirectoryPtrList;
10145 static constexpr size_t position{0};
10146 static constexpr char const * const name{"vector"};
10147 static constexpr char const * const typestr{"SgAsmPEImportDirectoryPtrList"};
10148 static constexpr bool traverse{true};
10149 static constexpr auto mbr_ptr{&SgAsmPEImportDirectoryList::p_vector};
10150 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10151 using bind = Desc<SgAsmPEImportDirectoryList, SgAsmPEImportDirectoryPtrList SgAsmPEImportDirectoryList::*, &SgAsmPEImportDirectoryList::p_vector>;
10152};
10156 static constexpr char const * const name{"AsmPEImportDirectoryList"};
10157 static constexpr unsigned long variant{257};
10158 static constexpr bool concrete{true};
10159 using subclasses_t = mp::List<>;
10161};
10162template <> struct node_from_variant_t<257> { using type = SgAsmPEImportDirectoryList; };
10163
10164// Class: AsmPEImportItem
10165template <> struct describe_field_t<SgAsmPEImportItem,bool,&SgAsmPEImportItem::p_by_ordinal> {
10166 using parent = SgAsmPEImportItem;
10167 using field_type = bool;
10168 static constexpr size_t position{0};
10169 static constexpr char const * const name{"by_ordinal"};
10170 static constexpr char const * const typestr{"bool"};
10171 static constexpr bool traverse{false};
10172 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_by_ordinal};
10173 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10174 using bind = Desc<SgAsmPEImportItem, bool SgAsmPEImportItem::*, &SgAsmPEImportItem::p_by_ordinal>;
10175};
10176template <> struct describe_field_t<SgAsmPEImportItem,unsigned,&SgAsmPEImportItem::p_ordinal> {
10177 using parent = SgAsmPEImportItem;
10178 using field_type = unsigned;
10179 static constexpr size_t position{1};
10180 static constexpr char const * const name{"ordinal"};
10181 static constexpr char const * const typestr{"unsigned"};
10182 static constexpr bool traverse{false};
10183 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_ordinal};
10184 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10185 using bind = Desc<SgAsmPEImportItem, unsigned SgAsmPEImportItem::*, &SgAsmPEImportItem::p_ordinal>;
10186};
10187template <> struct describe_field_t<SgAsmPEImportItem,unsigned,&SgAsmPEImportItem::p_hint> {
10188 using parent = SgAsmPEImportItem;
10189 using field_type = unsigned;
10190 static constexpr size_t position{2};
10191 static constexpr char const * const name{"hint"};
10192 static constexpr char const * const typestr{"unsigned"};
10193 static constexpr bool traverse{false};
10194 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_hint};
10195 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10196 using bind = Desc<SgAsmPEImportItem, unsigned SgAsmPEImportItem::*, &SgAsmPEImportItem::p_hint>;
10197};
10198template <> struct describe_field_t<SgAsmPEImportItem,SgAsmGenericString*,&SgAsmPEImportItem::p_name> {
10199 using parent = SgAsmPEImportItem;
10201 static constexpr size_t position{3};
10202 static constexpr char const * const name{"name"};
10203 static constexpr char const * const typestr{"SgAsmGenericString*"};
10204 static constexpr bool traverse{true};
10205 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_name};
10206 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10207 using bind = Desc<SgAsmPEImportItem, SgAsmGenericString* SgAsmPEImportItem::*, &SgAsmPEImportItem::p_name>;
10208};
10209template <> struct describe_field_t<SgAsmPEImportItem,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEImportItem::p_hintname_rva> {
10210 using parent = SgAsmPEImportItem;
10212 static constexpr size_t position{4};
10213 static constexpr char const * const name{"hintname_rva"};
10214 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
10215 static constexpr bool traverse{false};
10216 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_hintname_rva};
10217 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10218 using bind = Desc<SgAsmPEImportItem, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEImportItem::*, &SgAsmPEImportItem::p_hintname_rva>;
10219};
10220template <> struct describe_field_t<SgAsmPEImportItem,size_t,&SgAsmPEImportItem::p_hintname_nalloc> {
10221 using parent = SgAsmPEImportItem;
10222 using field_type = size_t;
10223 static constexpr size_t position{5};
10224 static constexpr char const * const name{"hintname_nalloc"};
10225 static constexpr char const * const typestr{"size_t"};
10226 static constexpr bool traverse{false};
10227 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_hintname_nalloc};
10228 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10229 using bind = Desc<SgAsmPEImportItem, size_t SgAsmPEImportItem::*, &SgAsmPEImportItem::p_hintname_nalloc>;
10230};
10231template <> struct describe_field_t<SgAsmPEImportItem,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPEImportItem::p_bound_rva> {
10232 using parent = SgAsmPEImportItem;
10234 static constexpr size_t position{6};
10235 static constexpr char const * const name{"bound_rva"};
10236 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
10237 static constexpr bool traverse{false};
10238 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_bound_rva};
10239 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10240 using bind = Desc<SgAsmPEImportItem, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPEImportItem::*, &SgAsmPEImportItem::p_bound_rva>;
10241};
10242template <> struct describe_field_t<SgAsmPEImportItem,bool,&SgAsmPEImportItem::p_iat_written> {
10243 using parent = SgAsmPEImportItem;
10244 using field_type = bool;
10245 static constexpr size_t position{7};
10246 static constexpr char const * const name{"iat_written"};
10247 static constexpr char const * const typestr{"bool"};
10248 static constexpr bool traverse{false};
10249 static constexpr auto mbr_ptr{&SgAsmPEImportItem::p_iat_written};
10250 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10251 using bind = Desc<SgAsmPEImportItem, bool SgAsmPEImportItem::*, &SgAsmPEImportItem::p_iat_written>;
10252};
10262template <> struct node_from_variant_t<258> { using type = SgAsmPEImportItem; };
10263
10264// Class: AsmPEImportItemList
10265template <> struct describe_field_t<SgAsmPEImportItemList,SgAsmPEImportItemPtrList,&SgAsmPEImportItemList::p_vector> {
10267 using field_type = SgAsmPEImportItemPtrList;
10268 static constexpr size_t position{0};
10269 static constexpr char const * const name{"vector"};
10270 static constexpr char const * const typestr{"SgAsmPEImportItemPtrList"};
10271 static constexpr bool traverse{true};
10272 static constexpr auto mbr_ptr{&SgAsmPEImportItemList::p_vector};
10273 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10274 using bind = Desc<SgAsmPEImportItemList, SgAsmPEImportItemPtrList SgAsmPEImportItemList::*, &SgAsmPEImportItemList::p_vector>;
10275};
10279 static constexpr char const * const name{"AsmPEImportItemList"};
10280 static constexpr unsigned long variant{259};
10281 static constexpr bool concrete{true};
10282 using subclasses_t = mp::List<>;
10284};
10285template <> struct node_from_variant_t<259> { using type = SgAsmPEImportItemList; };
10286
10287// Class: AsmPEImportSection
10288template <> struct describe_field_t<SgAsmPEImportSection,SgAsmPEImportDirectoryList*,&SgAsmPEImportSection::p_importDirectories> {
10291 static constexpr size_t position{0};
10292 static constexpr char const * const name{"importDirectories"};
10293 static constexpr char const * const typestr{"SgAsmPEImportDirectoryList*"};
10294 static constexpr bool traverse{true};
10295 static constexpr auto mbr_ptr{&SgAsmPEImportSection::p_importDirectories};
10296 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10297 using bind = Desc<SgAsmPEImportSection, SgAsmPEImportDirectoryList* SgAsmPEImportSection::*, &SgAsmPEImportSection::p_importDirectories>;
10298};
10300 using node = SgAsmPEImportSection;
10301 using base = SgAsmPESection;
10302 static constexpr char const * const name{"AsmPEImportSection"};
10303 static constexpr unsigned long variant{260};
10304 static constexpr bool concrete{true};
10305 using subclasses_t = mp::List<>;
10307};
10308template <> struct node_from_variant_t<260> { using type = SgAsmPEImportSection; };
10309
10310// Class: AsmPERVASizePair
10311template <> struct describe_field_t<SgAsmPERVASizePair,Rose::BinaryAnalysis::RelativeVirtualAddress,&SgAsmPERVASizePair::p_e_rva> {
10312 using parent = SgAsmPERVASizePair;
10314 static constexpr size_t position{0};
10315 static constexpr char const * const name{"e_rva"};
10316 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RelativeVirtualAddress"};
10317 static constexpr bool traverse{false};
10318 static constexpr auto mbr_ptr{&SgAsmPERVASizePair::p_e_rva};
10319 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10320 using bind = Desc<SgAsmPERVASizePair, Rose::BinaryAnalysis::RelativeVirtualAddress SgAsmPERVASizePair::*, &SgAsmPERVASizePair::p_e_rva>;
10321};
10322template <> struct describe_field_t<SgAsmPERVASizePair,rose_addr_t,&SgAsmPERVASizePair::p_e_size> {
10323 using parent = SgAsmPERVASizePair;
10324 using field_type = rose_addr_t;
10325 static constexpr size_t position{1};
10326 static constexpr char const * const name{"e_size"};
10327 static constexpr char const * const typestr{"rose_addr_t"};
10328 static constexpr bool traverse{false};
10329 static constexpr auto mbr_ptr{&SgAsmPERVASizePair::p_e_size};
10330 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10331 using bind = Desc<SgAsmPERVASizePair, rose_addr_t SgAsmPERVASizePair::*, &SgAsmPERVASizePair::p_e_size>;
10332};
10333template <> struct describe_field_t<SgAsmPERVASizePair,SgAsmGenericSection*,&SgAsmPERVASizePair::p_section> {
10334 using parent = SgAsmPERVASizePair;
10336 static constexpr size_t position{2};
10337 static constexpr char const * const name{"section"};
10338 static constexpr char const * const typestr{"SgAsmGenericSection*"};
10339 static constexpr bool traverse{false};
10340 static constexpr auto mbr_ptr{&SgAsmPERVASizePair::p_section};
10341 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10342 using bind = Desc<SgAsmPERVASizePair, SgAsmGenericSection* SgAsmPERVASizePair::*, &SgAsmPERVASizePair::p_section>;
10343};
10353template <> struct node_from_variant_t<261> { using type = SgAsmPERVASizePair; };
10354
10355// Class: AsmPERVASizePairList
10356template <> struct describe_field_t<SgAsmPERVASizePairList,SgAsmPERVASizePairPtrList,&SgAsmPERVASizePairList::p_pairs> {
10358 using field_type = SgAsmPERVASizePairPtrList;
10359 static constexpr size_t position{0};
10360 static constexpr char const * const name{"pairs"};
10361 static constexpr char const * const typestr{"SgAsmPERVASizePairPtrList"};
10362 static constexpr bool traverse{true};
10363 static constexpr auto mbr_ptr{&SgAsmPERVASizePairList::p_pairs};
10364 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10365 using bind = Desc<SgAsmPERVASizePairList, SgAsmPERVASizePairPtrList SgAsmPERVASizePairList::*, &SgAsmPERVASizePairList::p_pairs>;
10366};
10370 static constexpr char const * const name{"AsmPERVASizePairList"};
10371 static constexpr unsigned long variant{262};
10372 static constexpr bool concrete{true};
10373 using subclasses_t = mp::List<>;
10375};
10376template <> struct node_from_variant_t<262> { using type = SgAsmPERVASizePairList; };
10377
10378// Class: AsmPESection
10379template <> struct describe_field_t<SgAsmPESection,SgAsmPESectionTableEntry*,&SgAsmPESection::p_section_entry> {
10380 using parent = SgAsmPESection;
10382 static constexpr size_t position{0};
10383 static constexpr char const * const name{"section_entry"};
10384 static constexpr char const * const typestr{"SgAsmPESectionTableEntry*"};
10385 static constexpr bool traverse{true};
10386 static constexpr auto mbr_ptr{&SgAsmPESection::p_section_entry};
10387 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10388 using bind = Desc<SgAsmPESection, SgAsmPESectionTableEntry* SgAsmPESection::*, &SgAsmPESection::p_section_entry>;
10389};
10390template <> struct describe_node_t<SgAsmPESection> {
10391 using node = SgAsmPESection;
10392 using base = SgAsmGenericSection;
10393 static constexpr char const * const name{"AsmPESection"};
10394 static constexpr unsigned long variant{263};
10395 static constexpr bool concrete{true};
10398};
10399template <> struct node_from_variant_t<263> { using type = SgAsmPESection; };
10400
10401// Class: AsmPESectionTable
10403 using node = SgAsmPESectionTable;
10404 using base = SgAsmGenericSection;
10405 static constexpr char const * const name{"AsmPESectionTable"};
10406 static constexpr unsigned long variant{264};
10407 static constexpr bool concrete{true};
10408 using subclasses_t = mp::List<>;
10409 using fields_t = mp::List<>;
10410};
10411template <> struct node_from_variant_t<264> { using type = SgAsmPESectionTable; };
10412
10413// Class: AsmPESectionTableEntry
10414template <> struct describe_field_t<SgAsmPESectionTableEntry,std::string,&SgAsmPESectionTableEntry::p_name> {
10416 using field_type = std::string;
10417 static constexpr size_t position{0};
10418 static constexpr char const * const name{"name"};
10419 static constexpr char const * const typestr{"std::string"};
10420 static constexpr bool traverse{false};
10421 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_name};
10422 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10423 using bind = Desc<SgAsmPESectionTableEntry, std::string SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_name>;
10424};
10425template <> struct describe_field_t<SgAsmPESectionTableEntry,rose_addr_t,&SgAsmPESectionTableEntry::p_virtual_size> {
10427 using field_type = rose_addr_t;
10428 static constexpr size_t position{1};
10429 static constexpr char const * const name{"virtual_size"};
10430 static constexpr char const * const typestr{"rose_addr_t"};
10431 static constexpr bool traverse{false};
10432 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_virtual_size};
10433 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10434 using bind = Desc<SgAsmPESectionTableEntry, rose_addr_t SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_virtual_size>;
10435};
10436template <> struct describe_field_t<SgAsmPESectionTableEntry,rose_addr_t,&SgAsmPESectionTableEntry::p_rva> {
10438 using field_type = rose_addr_t;
10439 static constexpr size_t position{2};
10440 static constexpr char const * const name{"rva"};
10441 static constexpr char const * const typestr{"rose_addr_t"};
10442 static constexpr bool traverse{false};
10443 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_rva};
10444 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10445 using bind = Desc<SgAsmPESectionTableEntry, rose_addr_t SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_rva>;
10446};
10447template <> struct describe_field_t<SgAsmPESectionTableEntry,rose_addr_t,&SgAsmPESectionTableEntry::p_physical_size> {
10449 using field_type = rose_addr_t;
10450 static constexpr size_t position{3};
10451 static constexpr char const * const name{"physical_size"};
10452 static constexpr char const * const typestr{"rose_addr_t"};
10453 static constexpr bool traverse{false};
10454 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_physical_size};
10455 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10456 using bind = Desc<SgAsmPESectionTableEntry, rose_addr_t SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_physical_size>;
10457};
10458template <> struct describe_field_t<SgAsmPESectionTableEntry,rose_addr_t,&SgAsmPESectionTableEntry::p_physical_offset> {
10460 using field_type = rose_addr_t;
10461 static constexpr size_t position{4};
10462 static constexpr char const * const name{"physical_offset"};
10463 static constexpr char const * const typestr{"rose_addr_t"};
10464 static constexpr bool traverse{false};
10465 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_physical_offset};
10466 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10467 using bind = Desc<SgAsmPESectionTableEntry, rose_addr_t SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_physical_offset>;
10468};
10469template <> struct describe_field_t<SgAsmPESectionTableEntry,unsigned,&SgAsmPESectionTableEntry::p_coff_line_nums> {
10471 using field_type = unsigned;
10472 static constexpr size_t position{5};
10473 static constexpr char const * const name{"coff_line_nums"};
10474 static constexpr char const * const typestr{"unsigned"};
10475 static constexpr bool traverse{false};
10476 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_coff_line_nums};
10477 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10478 using bind = Desc<SgAsmPESectionTableEntry, unsigned SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_coff_line_nums>;
10479};
10480template <> struct describe_field_t<SgAsmPESectionTableEntry,unsigned,&SgAsmPESectionTableEntry::p_n_relocs> {
10482 using field_type = unsigned;
10483 static constexpr size_t position{6};
10484 static constexpr char const * const name{"n_relocs"};
10485 static constexpr char const * const typestr{"unsigned"};
10486 static constexpr bool traverse{false};
10487 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_n_relocs};
10488 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10489 using bind = Desc<SgAsmPESectionTableEntry, unsigned SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_n_relocs>;
10490};
10491template <> struct describe_field_t<SgAsmPESectionTableEntry,unsigned,&SgAsmPESectionTableEntry::p_n_coff_line_nums> {
10493 using field_type = unsigned;
10494 static constexpr size_t position{7};
10495 static constexpr char const * const name{"n_coff_line_nums"};
10496 static constexpr char const * const typestr{"unsigned"};
10497 static constexpr bool traverse{false};
10498 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_n_coff_line_nums};
10499 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10500 using bind = Desc<SgAsmPESectionTableEntry, unsigned SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_n_coff_line_nums>;
10501};
10502template <> struct describe_field_t<SgAsmPESectionTableEntry,unsigned,&SgAsmPESectionTableEntry::p_flags> {
10504 using field_type = unsigned;
10505 static constexpr size_t position{8};
10506 static constexpr char const * const name{"flags"};
10507 static constexpr char const * const typestr{"unsigned"};
10508 static constexpr bool traverse{false};
10509 static constexpr auto mbr_ptr{&SgAsmPESectionTableEntry::p_flags};
10510 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10511 using bind = Desc<SgAsmPESectionTableEntry, unsigned SgAsmPESectionTableEntry::*, &SgAsmPESectionTableEntry::p_flags>;
10512};
10522template <> struct node_from_variant_t<265> { using type = SgAsmPESectionTableEntry; };
10523
10524// Class: AsmPEStringSection
10525template <> struct describe_field_t<SgAsmPEStringSection,SgAsmCoffStrtab*,&SgAsmPEStringSection::p_strtab> {
10527 using field_type = SgAsmCoffStrtab*;
10528 static constexpr size_t position{0};
10529 static constexpr char const * const name{"strtab"};
10530 static constexpr char const * const typestr{"SgAsmCoffStrtab*"};
10531 static constexpr bool traverse{false};
10532 static constexpr auto mbr_ptr{&SgAsmPEStringSection::p_strtab};
10533 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10534 using bind = Desc<SgAsmPEStringSection, SgAsmCoffStrtab* SgAsmPEStringSection::*, &SgAsmPEStringSection::p_strtab>;
10535};
10537 using node = SgAsmPEStringSection;
10538 using base = SgAsmPESection;
10539 static constexpr char const * const name{"AsmPEStringSection"};
10540 static constexpr unsigned long variant{266};
10541 static constexpr bool concrete{true};
10542 using subclasses_t = mp::List<>;
10544};
10545template <> struct node_from_variant_t<266> { using type = SgAsmPEStringSection; };
10546
10547// Class: AsmPowerpcInstruction
10548template <> struct describe_field_t<SgAsmPowerpcInstruction,Rose::BinaryAnalysis::PowerpcInstructionKind,&SgAsmPowerpcInstruction::p_kind> {
10550 using field_type = Rose::BinaryAnalysis::PowerpcInstructionKind;
10551 static constexpr size_t position{0};
10552 static constexpr char const * const name{"kind"};
10553 static constexpr char const * const typestr{"Rose::BinaryAnalysis::PowerpcInstructionKind"};
10554 static constexpr bool traverse{false};
10555 static constexpr auto mbr_ptr{&SgAsmPowerpcInstruction::p_kind};
10556 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10557 using bind = Desc<SgAsmPowerpcInstruction, Rose::BinaryAnalysis::PowerpcInstructionKind SgAsmPowerpcInstruction::*, &SgAsmPowerpcInstruction::p_kind>;
10558};
10561 using base = SgAsmInstruction;
10562 static constexpr char const * const name{"AsmPowerpcInstruction"};
10563 static constexpr unsigned long variant{267};
10564 static constexpr bool concrete{true};
10565 using subclasses_t = mp::List<>;
10567};
10568template <> struct node_from_variant_t<267> { using type = SgAsmPowerpcInstruction; };
10569
10570// Class: AsmRegisterNames
10571template <> struct describe_field_t<SgAsmRegisterNames,SgAsmRegisterReferenceExpressionPtrList,&SgAsmRegisterNames::p_registers> {
10572 using parent = SgAsmRegisterNames;
10573 using field_type = SgAsmRegisterReferenceExpressionPtrList;
10574 static constexpr size_t position{0};
10575 static constexpr char const * const name{"registers"};
10576 static constexpr char const * const typestr{"SgAsmRegisterReferenceExpressionPtrList"};
10577 static constexpr bool traverse{true};
10578 static constexpr auto mbr_ptr{&SgAsmRegisterNames::p_registers};
10579 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10580 using bind = Desc<SgAsmRegisterNames, SgAsmRegisterReferenceExpressionPtrList SgAsmRegisterNames::*, &SgAsmRegisterNames::p_registers>;
10581};
10582template <> struct describe_field_t<SgAsmRegisterNames,unsigned,&SgAsmRegisterNames::p_mask> {
10583 using parent = SgAsmRegisterNames;
10584 using field_type = unsigned;
10585 static constexpr size_t position{1};
10586 static constexpr char const * const name{"mask"};
10587 static constexpr char const * const typestr{"unsigned"};
10588 static constexpr bool traverse{false};
10589 static constexpr auto mbr_ptr{&SgAsmRegisterNames::p_mask};
10590 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10591 using bind = Desc<SgAsmRegisterNames, unsigned SgAsmRegisterNames::*, &SgAsmRegisterNames::p_mask>;
10592};
10594 using node = SgAsmRegisterNames;
10595 using base = SgAsmExpression;
10596 static constexpr char const * const name{"AsmRegisterNames"};
10597 static constexpr unsigned long variant{268};
10598 static constexpr bool concrete{true};
10599 using subclasses_t = mp::List<>;
10601};
10602template <> struct node_from_variant_t<268> { using type = SgAsmRegisterNames; };
10603
10604// Class: AsmRegisterReferenceExpression
10605template <> struct describe_field_t<SgAsmRegisterReferenceExpression,Rose::BinaryAnalysis::RegisterDescriptor,&SgAsmRegisterReferenceExpression::p_descriptor> {
10608 static constexpr size_t position{0};
10609 static constexpr char const * const name{"descriptor"};
10610 static constexpr char const * const typestr{"Rose::BinaryAnalysis::RegisterDescriptor"};
10611 static constexpr bool traverse{false};
10612 static constexpr auto mbr_ptr{&SgAsmRegisterReferenceExpression::p_descriptor};
10613 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10614 using bind = Desc<SgAsmRegisterReferenceExpression, Rose::BinaryAnalysis::RegisterDescriptor SgAsmRegisterReferenceExpression::*, &SgAsmRegisterReferenceExpression::p_descriptor>;
10615};
10616template <> struct describe_field_t<SgAsmRegisterReferenceExpression,int,&SgAsmRegisterReferenceExpression::p_adjustment> {
10618 using field_type = int;
10619 static constexpr size_t position{1};
10620 static constexpr char const * const name{"adjustment"};
10621 static constexpr char const * const typestr{"int"};
10622 static constexpr bool traverse{false};
10623 static constexpr auto mbr_ptr{&SgAsmRegisterReferenceExpression::p_adjustment};
10624 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10625 using bind = Desc<SgAsmRegisterReferenceExpression, int SgAsmRegisterReferenceExpression::*, &SgAsmRegisterReferenceExpression::p_adjustment>;
10626};
10636template <> struct node_from_variant_t<269> { using type = SgAsmRegisterReferenceExpression; };
10637
10638// Class: AsmRiscOperation
10639template <> struct describe_field_t<SgAsmRiscOperation,SgAsmRiscOperation::RiscOperator,&SgAsmRiscOperation::p_riscOperator> {
10640 using parent = SgAsmRiscOperation;
10642 static constexpr size_t position{0};
10643 static constexpr char const * const name{"riscOperator"};
10644 static constexpr char const * const typestr{"SgAsmRiscOperation::RiscOperator"};
10645 static constexpr bool traverse{false};
10646 static constexpr auto mbr_ptr{&SgAsmRiscOperation::p_riscOperator};
10647 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10648 using bind = Desc<SgAsmRiscOperation, SgAsmRiscOperation::RiscOperator SgAsmRiscOperation::*, &SgAsmRiscOperation::p_riscOperator>;
10649};
10650template <> struct describe_field_t<SgAsmRiscOperation,SgAsmExprListExp*,&SgAsmRiscOperation::p_operands> {
10651 using parent = SgAsmRiscOperation;
10653 static constexpr size_t position{1};
10654 static constexpr char const * const name{"operands"};
10655 static constexpr char const * const typestr{"SgAsmExprListExp*"};
10656 static constexpr bool traverse{true};
10657 static constexpr auto mbr_ptr{&SgAsmRiscOperation::p_operands};
10658 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10659 using bind = Desc<SgAsmRiscOperation, SgAsmExprListExp* SgAsmRiscOperation::*, &SgAsmRiscOperation::p_operands>;
10660};
10662 using node = SgAsmRiscOperation;
10663 using base = SgAsmExpression;
10664 static constexpr char const * const name{"AsmRiscOperation"};
10665 static constexpr unsigned long variant{270};
10666 static constexpr bool concrete{true};
10667 using subclasses_t = mp::List<>;
10669};
10670template <> struct node_from_variant_t<270> { using type = SgAsmRiscOperation; };
10671
10672// Class: AsmScalarType
10673template <> struct describe_field_t<SgAsmScalarType,Rose::BinaryAnalysis::ByteOrder::Endianness,&SgAsmScalarType::p_minorOrder> {
10674 using parent = SgAsmScalarType;
10676 static constexpr size_t position{0};
10677 static constexpr char const * const name{"minorOrder"};
10678 static constexpr char const * const typestr{"Rose::BinaryAnalysis::ByteOrder::Endianness"};
10679 static constexpr bool traverse{false};
10680 static constexpr auto mbr_ptr{&SgAsmScalarType::p_minorOrder};
10681 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10682 using bind = Desc<SgAsmScalarType, Rose::BinaryAnalysis::ByteOrder::Endianness SgAsmScalarType::*, &SgAsmScalarType::p_minorOrder>;
10683};
10684template <> struct describe_field_t<SgAsmScalarType,Rose::BinaryAnalysis::ByteOrder::Endianness,&SgAsmScalarType::p_majorOrder> {
10685 using parent = SgAsmScalarType;
10687 static constexpr size_t position{1};
10688 static constexpr char const * const name{"majorOrder"};
10689 static constexpr char const * const typestr{"Rose::BinaryAnalysis::ByteOrder::Endianness"};
10690 static constexpr bool traverse{false};
10691 static constexpr auto mbr_ptr{&SgAsmScalarType::p_majorOrder};
10692 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10693 using bind = Desc<SgAsmScalarType, Rose::BinaryAnalysis::ByteOrder::Endianness SgAsmScalarType::*, &SgAsmScalarType::p_majorOrder>;
10694};
10695template <> struct describe_field_t<SgAsmScalarType,size_t,&SgAsmScalarType::p_majorNBytes> {
10696 using parent = SgAsmScalarType;
10697 using field_type = size_t;
10698 static constexpr size_t position{2};
10699 static constexpr char const * const name{"majorNBytes"};
10700 static constexpr char const * const typestr{"size_t"};
10701 static constexpr bool traverse{false};
10702 static constexpr auto mbr_ptr{&SgAsmScalarType::p_majorNBytes};
10703 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10704 using bind = Desc<SgAsmScalarType, size_t SgAsmScalarType::*, &SgAsmScalarType::p_majorNBytes>;
10705};
10706template <> struct describe_field_t<SgAsmScalarType,size_t,&SgAsmScalarType::p_nBits> {
10707 using parent = SgAsmScalarType;
10708 using field_type = size_t;
10709 static constexpr size_t position{3};
10710 static constexpr char const * const name{"nBits"};
10711 static constexpr char const * const typestr{"size_t"};
10712 static constexpr bool traverse{false};
10713 static constexpr auto mbr_ptr{&SgAsmScalarType::p_nBits};
10714 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10715 using bind = Desc<SgAsmScalarType, size_t SgAsmScalarType::*, &SgAsmScalarType::p_nBits>;
10716};
10726template <> struct node_from_variant_t<271> { using type = SgAsmScalarType; };
10727
10728// Class: AsmStatement
10729template <> struct describe_field_t<SgAsmStatement,rose_addr_t,&SgAsmStatement::p_address> {
10730 using parent = SgAsmStatement;
10731 using field_type = rose_addr_t;
10732 static constexpr size_t position{0};
10733 static constexpr char const * const name{"address"};
10734 static constexpr char const * const typestr{"rose_addr_t"};
10735 static constexpr bool traverse{false};
10736 static constexpr auto mbr_ptr{&SgAsmStatement::p_address};
10737 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10738 using bind = Desc<SgAsmStatement, rose_addr_t SgAsmStatement::*, &SgAsmStatement::p_address>;
10739};
10740template <> struct describe_field_t<SgAsmStatement,std::string,&SgAsmStatement::p_comment> {
10741 using parent = SgAsmStatement;
10742 using field_type = std::string;
10743 static constexpr size_t position{1};
10744 static constexpr char const * const name{"comment"};
10745 static constexpr char const * const typestr{"std::string"};
10746 static constexpr bool traverse{false};
10747 static constexpr auto mbr_ptr{&SgAsmStatement::p_comment};
10748 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10749 using bind = Desc<SgAsmStatement, std::string SgAsmStatement::*, &SgAsmStatement::p_comment>;
10750};
10751template <> struct describe_node_t<SgAsmStatement> {
10752 using node = SgAsmStatement;
10753 using base = SgAsmNode;
10754 static constexpr char const * const name{"AsmStatement"};
10755 static constexpr unsigned long variant{272};
10756 static constexpr bool concrete{false};
10759};
10760template <> struct node_from_variant_t<272> { using type = SgAsmStatement; };
10761
10762// Class: AsmStaticData
10763template <> struct describe_field_t<SgAsmStaticData,SgUnsignedCharList,&SgAsmStaticData::p_rawBytes> {
10764 using parent = SgAsmStaticData;
10765 using field_type = SgUnsignedCharList;
10766 static constexpr size_t position{0};
10767 static constexpr char const * const name{"rawBytes"};
10768 static constexpr char const * const typestr{"SgUnsignedCharList"};
10769 static constexpr bool traverse{false};
10770 static constexpr auto mbr_ptr{&SgAsmStaticData::p_rawBytes};
10771 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10772 using bind = Desc<SgAsmStaticData, SgUnsignedCharList SgAsmStaticData::*, &SgAsmStaticData::p_rawBytes>;
10773};
10775 using node = SgAsmStaticData;
10776 using base = SgAsmStatement;
10777 static constexpr char const * const name{"AsmStaticData"};
10778 static constexpr unsigned long variant{273};
10779 static constexpr bool concrete{true};
10780 using subclasses_t = mp::List<>;
10782};
10783template <> struct node_from_variant_t<273> { using type = SgAsmStaticData; };
10784
10785// Class: AsmStmt
10786template <> struct describe_field_t<SgAsmStmt,std::string,&SgAsmStmt::p_assemblyCode> {
10787 using parent = SgAsmStmt;
10788 using field_type = std::string;
10789 static constexpr size_t position{0};
10790 static constexpr char const * const name{"assemblyCode"};
10791 static constexpr char const * const typestr{"std::string"};
10792 static constexpr bool traverse{false};
10793 static constexpr auto mbr_ptr{&SgAsmStmt::p_assemblyCode};
10794 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10795 using bind = Desc<SgAsmStmt, std::string SgAsmStmt::*, &SgAsmStmt::p_assemblyCode>;
10796};
10797template <> struct describe_field_t<SgAsmStmt,bool,&SgAsmStmt::p_useGnuExtendedFormat> {
10798 using parent = SgAsmStmt;
10799 using field_type = bool;
10800 static constexpr size_t position{1};
10801 static constexpr char const * const name{"useGnuExtendedFormat"};
10802 static constexpr char const * const typestr{"bool"};
10803 static constexpr bool traverse{false};
10804 static constexpr auto mbr_ptr{&SgAsmStmt::p_useGnuExtendedFormat};
10805 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10806 using bind = Desc<SgAsmStmt, bool SgAsmStmt::*, &SgAsmStmt::p_useGnuExtendedFormat>;
10807};
10808template <> struct describe_field_t<SgAsmStmt,SgExpressionPtrList,&SgAsmStmt::p_operands> {
10809 using parent = SgAsmStmt;
10810 using field_type = SgExpressionPtrList;
10811 static constexpr size_t position{2};
10812 static constexpr char const * const name{"operands"};
10813 static constexpr char const * const typestr{"SgExpressionPtrList"};
10814 static constexpr bool traverse{true};
10815 static constexpr auto mbr_ptr{&SgAsmStmt::p_operands};
10816 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10817 using bind = Desc<SgAsmStmt, SgExpressionPtrList SgAsmStmt::*, &SgAsmStmt::p_operands>;
10818};
10820 using parent = SgAsmStmt;
10821 using field_type = SgAsmStmt::AsmRegisterNameList;
10822 static constexpr size_t position{3};
10823 static constexpr char const * const name{"clobberRegisterList"};
10824 static constexpr char const * const typestr{"SgAsmStmt::AsmRegisterNameList"};
10825 static constexpr bool traverse{false};
10826 static constexpr auto mbr_ptr{&SgAsmStmt::p_clobberRegisterList};
10827 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10828 using bind = Desc<SgAsmStmt, SgAsmStmt::AsmRegisterNameList SgAsmStmt::*, &SgAsmStmt::p_clobberRegisterList>;
10829};
10830template <> struct describe_field_t<SgAsmStmt,bool,&SgAsmStmt::p_isVolatile> {
10831 using parent = SgAsmStmt;
10832 using field_type = bool;
10833 static constexpr size_t position{4};
10834 static constexpr char const * const name{"isVolatile"};
10835 static constexpr char const * const typestr{"bool"};
10836 static constexpr bool traverse{false};
10837 static constexpr auto mbr_ptr{&SgAsmStmt::p_isVolatile};
10838 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10839 using bind = Desc<SgAsmStmt, bool SgAsmStmt::*, &SgAsmStmt::p_isVolatile>;
10840};
10850template <> struct node_from_variant_t<274> { using type = SgAsmStmt; };
10851
10852// Class: AsmStoredString
10853template <> struct describe_field_t<SgAsmStoredString,SgAsmStringStorage*,&SgAsmStoredString::p_storage> {
10854 using parent = SgAsmStoredString;
10856 static constexpr size_t position{0};
10857 static constexpr char const * const name{"storage"};
10858 static constexpr char const * const typestr{"SgAsmStringStorage*"};
10859 static constexpr bool traverse{false};
10860 static constexpr auto mbr_ptr{&SgAsmStoredString::p_storage};
10861 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10862 using bind = Desc<SgAsmStoredString, SgAsmStringStorage* SgAsmStoredString::*, &SgAsmStoredString::p_storage>;
10863};
10865 using node = SgAsmStoredString;
10866 using base = SgAsmGenericString;
10867 static constexpr char const * const name{"AsmStoredString"};
10868 static constexpr unsigned long variant{275};
10869 static constexpr bool concrete{true};
10870 using subclasses_t = mp::List<>;
10872};
10873template <> struct node_from_variant_t<275> { using type = SgAsmStoredString; };
10874
10875// Class: AsmStringStorage
10876template <> struct describe_field_t<SgAsmStringStorage,SgAsmGenericStrtab*,&SgAsmStringStorage::p_strtab> {
10877 using parent = SgAsmStringStorage;
10879 static constexpr size_t position{0};
10880 static constexpr char const * const name{"strtab"};
10881 static constexpr char const * const typestr{"SgAsmGenericStrtab*"};
10882 static constexpr bool traverse{false};
10883 static constexpr auto mbr_ptr{&SgAsmStringStorage::p_strtab};
10884 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10885 using bind = Desc<SgAsmStringStorage, SgAsmGenericStrtab* SgAsmStringStorage::*, &SgAsmStringStorage::p_strtab>;
10886};
10887template <> struct describe_field_t<SgAsmStringStorage,std::string,&SgAsmStringStorage::p_string> {
10888 using parent = SgAsmStringStorage;
10889 using field_type = std::string;
10890 static constexpr size_t position{1};
10891 static constexpr char const * const name{"string"};
10892 static constexpr char const * const typestr{"std::string"};
10893 static constexpr bool traverse{false};
10894 static constexpr auto mbr_ptr{&SgAsmStringStorage::p_string};
10895 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10896 using bind = Desc<SgAsmStringStorage, std::string SgAsmStringStorage::*, &SgAsmStringStorage::p_string>;
10897};
10898template <> struct describe_field_t<SgAsmStringStorage,rose_addr_t,&SgAsmStringStorage::p_offset> {
10899 using parent = SgAsmStringStorage;
10900 using field_type = rose_addr_t;
10901 static constexpr size_t position{2};
10902 static constexpr char const * const name{"offset"};
10903 static constexpr char const * const typestr{"rose_addr_t"};
10904 static constexpr bool traverse{false};
10905 static constexpr auto mbr_ptr{&SgAsmStringStorage::p_offset};
10906 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10907 using bind = Desc<SgAsmStringStorage, rose_addr_t SgAsmStringStorage::*, &SgAsmStringStorage::p_offset>;
10908};
10910 using node = SgAsmStringStorage;
10912 static constexpr char const * const name{"AsmStringStorage"};
10913 static constexpr unsigned long variant{276};
10914 static constexpr bool concrete{true};
10915 using subclasses_t = mp::List<>;
10917};
10918template <> struct node_from_variant_t<276> { using type = SgAsmStringStorage; };
10919
10920// Class: AsmType
10921template <> struct describe_node_t<SgAsmType> {
10922 using node = SgAsmType;
10923 using base = SgAsmNode;
10924 static constexpr char const * const name{"AsmType"};
10925 static constexpr unsigned long variant{277};
10926 static constexpr bool concrete{false};
10928 using fields_t = mp::List<>;
10929};
10930template <> struct node_from_variant_t<277> { using type = SgAsmType; };
10931
10932// Class: AsmUnaryExpression
10933template <> struct describe_field_t<SgAsmUnaryExpression,SgAsmExpression*,&SgAsmUnaryExpression::p_operand> {
10935 using field_type = SgAsmExpression*;
10936 static constexpr size_t position{0};
10937 static constexpr char const * const name{"operand"};
10938 static constexpr char const * const typestr{"SgAsmExpression*"};
10939 static constexpr bool traverse{true};
10940 static constexpr auto mbr_ptr{&SgAsmUnaryExpression::p_operand};
10941 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
10942 using bind = Desc<SgAsmUnaryExpression, SgAsmExpression* SgAsmUnaryExpression::*, &SgAsmUnaryExpression::p_operand>;
10943};
10945 using node = SgAsmUnaryExpression;
10946 using base = SgAsmExpression;
10947 static constexpr char const * const name{"AsmUnaryExpression"};
10948 static constexpr unsigned long variant{278};
10949 static constexpr bool concrete{false};
10952};
10953template <> struct node_from_variant_t<278> { using type = SgAsmUnaryExpression; };
10954
10955// Class: AsmUnaryMinus
10957 using node = SgAsmUnaryMinus;
10958 using base = SgAsmUnaryExpression;
10959 static constexpr char const * const name{"AsmUnaryMinus"};
10960 static constexpr unsigned long variant{279};
10961 static constexpr bool concrete{true};
10962 using subclasses_t = mp::List<>;
10963 using fields_t = mp::List<>;
10964};
10965template <> struct node_from_variant_t<279> { using type = SgAsmUnaryMinus; };
10966
10967// Class: AsmUnaryPlus
10968template <> struct describe_node_t<SgAsmUnaryPlus> {
10969 using node = SgAsmUnaryPlus;
10970 using base = SgAsmUnaryExpression;
10971 static constexpr char const * const name{"AsmUnaryPlus"};
10972 static constexpr unsigned long variant{280};
10973 static constexpr bool concrete{true};
10974 using subclasses_t = mp::List<>;
10975 using fields_t = mp::List<>;
10976};
10977template <> struct node_from_variant_t<280> { using type = SgAsmUnaryPlus; };
10978
10979// Class: AsmUnaryRrx
10980template <> struct describe_node_t<SgAsmUnaryRrx> {
10981 using node = SgAsmUnaryRrx;
10982 using base = SgAsmUnaryExpression;
10983 static constexpr char const * const name{"AsmUnaryRrx"};
10984 static constexpr unsigned long variant{281};
10985 static constexpr bool concrete{true};
10986 using subclasses_t = mp::List<>;
10987 using fields_t = mp::List<>;
10988};
10989template <> struct node_from_variant_t<281> { using type = SgAsmUnaryRrx; };
10990
10991// Class: AsmUnarySignedExtend
10994 using base = SgAsmUnaryExpression;
10995 static constexpr char const * const name{"AsmUnarySignedExtend"};
10996 static constexpr unsigned long variant{282};
10997 static constexpr bool concrete{true};
10998 using subclasses_t = mp::List<>;
10999 using fields_t = mp::List<>;
11000};
11001template <> struct node_from_variant_t<282> { using type = SgAsmUnarySignedExtend; };
11002
11003// Class: AsmUnaryUnsignedExtend
11006 using base = SgAsmUnaryExpression;
11007 static constexpr char const * const name{"AsmUnaryUnsignedExtend"};
11008 static constexpr unsigned long variant{283};
11009 static constexpr bool concrete{true};
11010 using subclasses_t = mp::List<>;
11011 using fields_t = mp::List<>;
11012};
11013template <> struct node_from_variant_t<283> { using type = SgAsmUnaryUnsignedExtend; };
11014
11015// Class: AsmUnaryTruncate
11017 using node = SgAsmUnaryTruncate;
11018 using base = SgAsmUnaryExpression;
11019 static constexpr char const * const name{"AsmUnaryTruncate"};
11020 static constexpr unsigned long variant{284};
11021 static constexpr bool concrete{true};
11022 using subclasses_t = mp::List<>;
11023 using fields_t = mp::List<>;
11024};
11025template <> struct node_from_variant_t<284> { using type = SgAsmUnaryTruncate; };
11026
11027// Class: AsmValueExpression
11028template <> struct describe_field_t<SgAsmValueExpression,SgAsmValueExpression*,&SgAsmValueExpression::p_unfoldedExpression> {
11031 static constexpr size_t position{0};
11032 static constexpr char const * const name{"unfoldedExpression"};
11033 static constexpr char const * const typestr{"SgAsmValueExpression*"};
11034 static constexpr bool traverse{true};
11035 static constexpr auto mbr_ptr{&SgAsmValueExpression::p_unfoldedExpression};
11036 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11037 using bind = Desc<SgAsmValueExpression, SgAsmValueExpression* SgAsmValueExpression::*, &SgAsmValueExpression::p_unfoldedExpression>;
11038};
11039template <> struct describe_field_t<SgAsmValueExpression,unsigned short,&SgAsmValueExpression::p_bitOffset> {
11041 using field_type = unsigned short;
11042 static constexpr size_t position{1};
11043 static constexpr char const * const name{"bitOffset"};
11044 static constexpr char const * const typestr{"unsigned short"};
11045 static constexpr bool traverse{false};
11046 static constexpr auto mbr_ptr{&SgAsmValueExpression::p_bitOffset};
11047 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11048 using bind = Desc<SgAsmValueExpression, unsigned short SgAsmValueExpression::*, &SgAsmValueExpression::p_bitOffset>;
11049};
11050template <> struct describe_field_t<SgAsmValueExpression,unsigned short,&SgAsmValueExpression::p_bitSize> {
11052 using field_type = unsigned short;
11053 static constexpr size_t position{2};
11054 static constexpr char const * const name{"bitSize"};
11055 static constexpr char const * const typestr{"unsigned short"};
11056 static constexpr bool traverse{false};
11057 static constexpr auto mbr_ptr{&SgAsmValueExpression::p_bitSize};
11058 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11059 using bind = Desc<SgAsmValueExpression, unsigned short SgAsmValueExpression::*, &SgAsmValueExpression::p_bitSize>;
11060};
11061template <> struct describe_field_t<SgAsmValueExpression,SgSymbol*,&SgAsmValueExpression::p_symbol> {
11063 using field_type = SgSymbol*;
11064 static constexpr size_t position{3};
11065 static constexpr char const * const name{"symbol"};
11066 static constexpr char const * const typestr{"SgSymbol*"};
11067 static constexpr bool traverse{false};
11068 static constexpr auto mbr_ptr{&SgAsmValueExpression::p_symbol};
11069 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11070 using bind = Desc<SgAsmValueExpression, SgSymbol* SgAsmValueExpression::*, &SgAsmValueExpression::p_symbol>;
11071};
11081template <> struct node_from_variant_t<285> { using type = SgAsmValueExpression; };
11082
11083// Class: AsmVectorType
11084template <> struct describe_field_t<SgAsmVectorType,size_t,&SgAsmVectorType::p_nElmts> {
11085 using parent = SgAsmVectorType;
11086 using field_type = size_t;
11087 static constexpr size_t position{0};
11088 static constexpr char const * const name{"nElmts"};
11089 static constexpr char const * const typestr{"size_t"};
11090 static constexpr bool traverse{false};
11091 static constexpr auto mbr_ptr{&SgAsmVectorType::p_nElmts};
11092 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11093 using bind = Desc<SgAsmVectorType, size_t SgAsmVectorType::*, &SgAsmVectorType::p_nElmts>;
11094};
11095template <> struct describe_field_t<SgAsmVectorType,SgAsmType*,&SgAsmVectorType::p_elmtType> {
11096 using parent = SgAsmVectorType;
11097 using field_type = SgAsmType*;
11098 static constexpr size_t position{1};
11099 static constexpr char const * const name{"elmtType"};
11100 static constexpr char const * const typestr{"SgAsmType*"};
11101 static constexpr bool traverse{false};
11102 static constexpr auto mbr_ptr{&SgAsmVectorType::p_elmtType};
11103 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11104 using bind = Desc<SgAsmVectorType, SgAsmType* SgAsmVectorType::*, &SgAsmVectorType::p_elmtType>;
11105};
11107 using node = SgAsmVectorType;
11108 using base = SgAsmType;
11109 static constexpr char const * const name{"AsmVectorType"};
11110 static constexpr unsigned long variant{286};
11111 static constexpr bool concrete{true};
11112 using subclasses_t = mp::List<>;
11114};
11115template <> struct node_from_variant_t<286> { using type = SgAsmVectorType; };
11116
11117// Class: AsmX86Instruction
11118template <> struct describe_field_t<SgAsmX86Instruction,Rose::BinaryAnalysis::X86InstructionKind,&SgAsmX86Instruction::p_kind> {
11121 static constexpr size_t position{0};
11122 static constexpr char const * const name{"kind"};
11123 static constexpr char const * const typestr{"Rose::BinaryAnalysis::X86InstructionKind"};
11124 static constexpr bool traverse{false};
11125 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_kind};
11126 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11127 using bind = Desc<SgAsmX86Instruction, Rose::BinaryAnalysis::X86InstructionKind SgAsmX86Instruction::*, &SgAsmX86Instruction::p_kind>;
11128};
11129template <> struct describe_field_t<SgAsmX86Instruction,Rose::BinaryAnalysis::X86InstructionSize,&SgAsmX86Instruction::p_baseSize> {
11131 using field_type = Rose::BinaryAnalysis::X86InstructionSize;
11132 static constexpr size_t position{1};
11133 static constexpr char const * const name{"baseSize"};
11134 static constexpr char const * const typestr{"Rose::BinaryAnalysis::X86InstructionSize"};
11135 static constexpr bool traverse{false};
11136 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_baseSize};
11137 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11138 using bind = Desc<SgAsmX86Instruction, Rose::BinaryAnalysis::X86InstructionSize SgAsmX86Instruction::*, &SgAsmX86Instruction::p_baseSize>;
11139};
11140template <> struct describe_field_t<SgAsmX86Instruction,Rose::BinaryAnalysis::X86InstructionSize,&SgAsmX86Instruction::p_operandSize> {
11142 using field_type = Rose::BinaryAnalysis::X86InstructionSize;
11143 static constexpr size_t position{2};
11144 static constexpr char const * const name{"operandSize"};
11145 static constexpr char const * const typestr{"Rose::BinaryAnalysis::X86InstructionSize"};
11146 static constexpr bool traverse{false};
11147 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_operandSize};
11148 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11149 using bind = Desc<SgAsmX86Instruction, Rose::BinaryAnalysis::X86InstructionSize SgAsmX86Instruction::*, &SgAsmX86Instruction::p_operandSize>;
11150};
11151template <> struct describe_field_t<SgAsmX86Instruction,Rose::BinaryAnalysis::X86InstructionSize,&SgAsmX86Instruction::p_addressSize> {
11153 using field_type = Rose::BinaryAnalysis::X86InstructionSize;
11154 static constexpr size_t position{3};
11155 static constexpr char const * const name{"addressSize"};
11156 static constexpr char const * const typestr{"Rose::BinaryAnalysis::X86InstructionSize"};
11157 static constexpr bool traverse{false};
11158 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_addressSize};
11159 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11160 using bind = Desc<SgAsmX86Instruction, Rose::BinaryAnalysis::X86InstructionSize SgAsmX86Instruction::*, &SgAsmX86Instruction::p_addressSize>;
11161};
11162template <> struct describe_field_t<SgAsmX86Instruction,bool,&SgAsmX86Instruction::p_lockPrefix> {
11164 using field_type = bool;
11165 static constexpr size_t position{4};
11166 static constexpr char const * const name{"lockPrefix"};
11167 static constexpr char const * const typestr{"bool"};
11168 static constexpr bool traverse{false};
11169 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_lockPrefix};
11170 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11171 using bind = Desc<SgAsmX86Instruction, bool SgAsmX86Instruction::*, &SgAsmX86Instruction::p_lockPrefix>;
11172};
11173template <> struct describe_field_t<SgAsmX86Instruction,Rose::BinaryAnalysis::X86RepeatPrefix,&SgAsmX86Instruction::p_repeatPrefix> {
11175 using field_type = Rose::BinaryAnalysis::X86RepeatPrefix;
11176 static constexpr size_t position{5};
11177 static constexpr char const * const name{"repeatPrefix"};
11178 static constexpr char const * const typestr{"Rose::BinaryAnalysis::X86RepeatPrefix"};
11179 static constexpr bool traverse{false};
11180 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_repeatPrefix};
11181 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11182 using bind = Desc<SgAsmX86Instruction, Rose::BinaryAnalysis::X86RepeatPrefix SgAsmX86Instruction::*, &SgAsmX86Instruction::p_repeatPrefix>;
11183};
11184template <> struct describe_field_t<SgAsmX86Instruction,Rose::BinaryAnalysis::X86BranchPrediction,&SgAsmX86Instruction::p_branchPrediction> {
11186 using field_type = Rose::BinaryAnalysis::X86BranchPrediction;
11187 static constexpr size_t position{6};
11188 static constexpr char const * const name{"branchPrediction"};
11189 static constexpr char const * const typestr{"Rose::BinaryAnalysis::X86BranchPrediction"};
11190 static constexpr bool traverse{false};
11191 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_branchPrediction};
11192 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11193 using bind = Desc<SgAsmX86Instruction, Rose::BinaryAnalysis::X86BranchPrediction SgAsmX86Instruction::*, &SgAsmX86Instruction::p_branchPrediction>;
11194};
11195template <> struct describe_field_t<SgAsmX86Instruction,Rose::BinaryAnalysis::X86SegmentRegister,&SgAsmX86Instruction::p_segmentOverride> {
11197 using field_type = Rose::BinaryAnalysis::X86SegmentRegister;
11198 static constexpr size_t position{7};
11199 static constexpr char const * const name{"segmentOverride"};
11200 static constexpr char const * const typestr{"Rose::BinaryAnalysis::X86SegmentRegister"};
11201 static constexpr bool traverse{false};
11202 static constexpr auto mbr_ptr{&SgAsmX86Instruction::p_segmentOverride};
11203 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11204 using bind = Desc<SgAsmX86Instruction, Rose::BinaryAnalysis::X86SegmentRegister SgAsmX86Instruction::*, &SgAsmX86Instruction::p_segmentOverride>;
11205};
11215template <> struct node_from_variant_t<287> { using type = SgAsmX86Instruction; };
11216
11217// Class: AsmBinaryAddressSymbol
11218template <> struct describe_field_t<SgAsmBinaryAddressSymbol,SgName,&SgAsmBinaryAddressSymbol::p_address_name> {
11220 using field_type = SgName;
11221 static constexpr size_t position{0};
11222 static constexpr char const * const name{"address_name"};
11223 static constexpr char const * const typestr{"SgName"};
11224 static constexpr bool traverse{false};
11225 static constexpr auto mbr_ptr{&SgAsmBinaryAddressSymbol::p_address_name};
11226 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11227 using bind = Desc<SgAsmBinaryAddressSymbol, SgName SgAsmBinaryAddressSymbol::*, &SgAsmBinaryAddressSymbol::p_address_name>;
11228};
11229template <> struct describe_field_t<SgAsmBinaryAddressSymbol,SgAsmInstruction*,&SgAsmBinaryAddressSymbol::p_address> {
11232 static constexpr size_t position{1};
11233 static constexpr char const * const name{"address"};
11234 static constexpr char const * const typestr{"SgAsmInstruction*"};
11235 static constexpr bool traverse{false};
11236 static constexpr auto mbr_ptr{&SgAsmBinaryAddressSymbol::p_address};
11237 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11238 using bind = Desc<SgAsmBinaryAddressSymbol, SgAsmInstruction* SgAsmBinaryAddressSymbol::*, &SgAsmBinaryAddressSymbol::p_address>;
11239};
11242 using base = SgSymbol;
11243 static constexpr char const * const name{"AsmBinaryAddressSymbol"};
11244 static constexpr unsigned long variant{288};
11245 static constexpr bool concrete{true};
11246 using subclasses_t = mp::List<>;
11248};
11249template <> struct node_from_variant_t<288> { using type = SgAsmBinaryAddressSymbol; };
11250
11251// Class: AsmBinaryDataSymbol
11252template <> struct describe_field_t<SgAsmBinaryDataSymbol,SgName,&SgAsmBinaryDataSymbol::p_variable_name> {
11254 using field_type = SgName;
11255 static constexpr size_t position{0};
11256 static constexpr char const * const name{"variable_name"};
11257 static constexpr char const * const typestr{"SgName"};
11258 static constexpr bool traverse{false};
11259 static constexpr auto mbr_ptr{&SgAsmBinaryDataSymbol::p_variable_name};
11260 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11261 using bind = Desc<SgAsmBinaryDataSymbol, SgName SgAsmBinaryDataSymbol::*, &SgAsmBinaryDataSymbol::p_variable_name>;
11262};
11263template <> struct describe_field_t<SgAsmBinaryDataSymbol,SgAsmInstruction*,&SgAsmBinaryDataSymbol::p_address> {
11266 static constexpr size_t position{1};
11267 static constexpr char const * const name{"address"};
11268 static constexpr char const * const typestr{"SgAsmInstruction*"};
11269 static constexpr bool traverse{false};
11270 static constexpr auto mbr_ptr{&SgAsmBinaryDataSymbol::p_address};
11271 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11272 using bind = Desc<SgAsmBinaryDataSymbol, SgAsmInstruction* SgAsmBinaryDataSymbol::*, &SgAsmBinaryDataSymbol::p_address>;
11273};
11276 using base = SgSymbol;
11277 static constexpr char const * const name{"AsmBinaryDataSymbol"};
11278 static constexpr unsigned long variant{289};
11279 static constexpr bool concrete{true};
11280 using subclasses_t = mp::List<>;
11282};
11283template <> struct node_from_variant_t<289> { using type = SgAsmBinaryDataSymbol; };
11284
11285// Class: AssertStmt
11286template <> struct describe_field_t<SgAssertStmt,SgExpression*,&SgAssertStmt::p_test> {
11287 using parent = SgAssertStmt;
11288 using field_type = SgExpression*;
11289 static constexpr size_t position{0};
11290 static constexpr char const * const name{"test"};
11291 static constexpr char const * const typestr{"SgExpression*"};
11292 static constexpr bool traverse{true};
11293 static constexpr auto mbr_ptr{&SgAssertStmt::p_test};
11294 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11295 using bind = Desc<SgAssertStmt, SgExpression* SgAssertStmt::*, &SgAssertStmt::p_test>;
11296};
11297template <> struct describe_field_t<SgAssertStmt,SgExpression*,&SgAssertStmt::p_exception_argument> {
11298 using parent = SgAssertStmt;
11299 using field_type = SgExpression*;
11300 static constexpr size_t position{1};
11301 static constexpr char const * const name{"exception_argument"};
11302 static constexpr char const * const typestr{"SgExpression*"};
11303 static constexpr bool traverse{true};
11304 static constexpr auto mbr_ptr{&SgAssertStmt::p_exception_argument};
11305 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11306 using bind = Desc<SgAssertStmt, SgExpression* SgAssertStmt::*, &SgAssertStmt::p_exception_argument>;
11307};
11308template <> struct describe_node_t<SgAssertStmt> {
11309 using node = SgAssertStmt;
11310 using base = SgStatement;
11311 static constexpr char const * const name{"AssertStmt"};
11312 static constexpr unsigned long variant{290};
11313 static constexpr bool concrete{true};
11314 using subclasses_t = mp::List<>;
11316};
11317template <> struct node_from_variant_t<290> { using type = SgAssertStmt; };
11318
11319// Class: AssignInitializer
11322 using field_type = SgExpression*;
11323 static constexpr size_t position{0};
11324 static constexpr char const * const name{"operand_i"};
11325 static constexpr char const * const typestr{"SgExpression*"};
11326 static constexpr bool traverse{true};
11327 static constexpr auto mbr_ptr{&SgAssignInitializer::p_operand_i};
11328 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11329 using bind = Desc<SgAssignInitializer, SgExpression* SgAssignInitializer::*, &SgAssignInitializer::p_operand_i>;
11330};
11333 using field_type = SgType*;
11334 static constexpr size_t position{1};
11335 static constexpr char const * const name{"expression_type"};
11336 static constexpr char const * const typestr{"SgType*"};
11337 static constexpr bool traverse{false};
11338 static constexpr auto mbr_ptr{&SgAssignInitializer::p_expression_type};
11339 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11340 using bind = Desc<SgAssignInitializer, SgType* SgAssignInitializer::*, &SgAssignInitializer::p_expression_type>;
11341};
11343 using node = SgAssignInitializer;
11344 using base = SgInitializer;
11345 static constexpr char const * const name{"AssignInitializer"};
11346 static constexpr unsigned long variant{291};
11347 static constexpr bool concrete{true};
11348 using subclasses_t = mp::List<>;
11350};
11351template <> struct node_from_variant_t<291> { using type = SgAssignInitializer; };
11352
11353// Class: AssignOp
11354template <> struct describe_node_t<SgAssignOp> {
11355 using node = SgAssignOp;
11356 using base = SgBinaryOp;
11357 static constexpr char const * const name{"AssignOp"};
11358 static constexpr unsigned long variant{292};
11359 static constexpr bool concrete{true};
11360 using subclasses_t = mp::List<>;
11361 using fields_t = mp::List<>;
11362};
11363template <> struct node_from_variant_t<292> { using type = SgAssignOp; };
11364
11365// Class: AssignStatement
11366template <> struct describe_field_t<SgAssignStatement,SgLabelRefExp*,&SgAssignStatement::p_label> {
11367 using parent = SgAssignStatement;
11368 using field_type = SgLabelRefExp*;
11369 static constexpr size_t position{0};
11370 static constexpr char const * const name{"label"};
11371 static constexpr char const * const typestr{"SgLabelRefExp*"};
11372 static constexpr bool traverse{false};
11373 static constexpr auto mbr_ptr{&SgAssignStatement::p_label};
11374 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11375 using bind = Desc<SgAssignStatement, SgLabelRefExp* SgAssignStatement::*, &SgAssignStatement::p_label>;
11376};
11377template <> struct describe_field_t<SgAssignStatement,SgExpression*,&SgAssignStatement::p_value> {
11378 using parent = SgAssignStatement;
11379 using field_type = SgExpression*;
11380 static constexpr size_t position{1};
11381 static constexpr char const * const name{"value"};
11382 static constexpr char const * const typestr{"SgExpression*"};
11383 static constexpr bool traverse{true};
11384 static constexpr auto mbr_ptr{&SgAssignStatement::p_value};
11385 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11386 using bind = Desc<SgAssignStatement, SgExpression* SgAssignStatement::*, &SgAssignStatement::p_value>;
11387};
11389 using node = SgAssignStatement;
11390 using base = SgStatement;
11391 static constexpr char const * const name{"AssignStatement"};
11392 static constexpr unsigned long variant{293};
11393 static constexpr bool concrete{true};
11394 using subclasses_t = mp::List<>;
11396};
11397template <> struct node_from_variant_t<293> { using type = SgAssignStatement; };
11398
11399// Class: AssignedGotoStatement
11400template <> struct describe_field_t<SgAssignedGotoStatement,SgExprListExp*,&SgAssignedGotoStatement::p_targets> {
11402 using field_type = SgExprListExp*;
11403 static constexpr size_t position{0};
11404 static constexpr char const * const name{"targets"};
11405 static constexpr char const * const typestr{"SgExprListExp*"};
11406 static constexpr bool traverse{true};
11407 static constexpr auto mbr_ptr{&SgAssignedGotoStatement::p_targets};
11408 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11409 using bind = Desc<SgAssignedGotoStatement, SgExprListExp* SgAssignedGotoStatement::*, &SgAssignedGotoStatement::p_targets>;
11410};
11413 using base = SgStatement;
11414 static constexpr char const * const name{"AssignedGotoStatement"};
11415 static constexpr unsigned long variant{294};
11416 static constexpr bool concrete{true};
11417 using subclasses_t = mp::List<>;
11419};
11420template <> struct node_from_variant_t<294> { using type = SgAssignedGotoStatement; };
11421
11422// Class: AssociateStatement
11423template <> struct describe_field_t<SgAssociateStatement,SgDeclarationStatementPtrList,&SgAssociateStatement::p_associates> {
11425 using field_type = SgDeclarationStatementPtrList;
11426 static constexpr size_t position{0};
11427 static constexpr char const * const name{"associates"};
11428 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
11429 static constexpr bool traverse{false};
11430 static constexpr auto mbr_ptr{&SgAssociateStatement::p_associates};
11431 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11432 using bind = Desc<SgAssociateStatement, SgDeclarationStatementPtrList SgAssociateStatement::*, &SgAssociateStatement::p_associates>;
11433};
11434template <> struct describe_field_t<SgAssociateStatement,SgBasicBlock*,&SgAssociateStatement::p_body> {
11436 using field_type = SgBasicBlock*;
11437 static constexpr size_t position{1};
11438 static constexpr char const * const name{"body"};
11439 static constexpr char const * const typestr{"SgBasicBlock*"};
11440 static constexpr bool traverse{true};
11441 static constexpr auto mbr_ptr{&SgAssociateStatement::p_body};
11442 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11443 using bind = Desc<SgAssociateStatement, SgBasicBlock* SgAssociateStatement::*, &SgAssociateStatement::p_body>;
11444};
11446 using node = SgAssociateStatement;
11447 using base = SgScopeStatement;
11448 static constexpr char const * const name{"AssociateStatement"};
11449 static constexpr unsigned long variant{295};
11450 static constexpr bool concrete{true};
11451 using subclasses_t = mp::List<>;
11453};
11454template <> struct node_from_variant_t<295> { using type = SgAssociateStatement; };
11455
11456// Class: AsteriskShapeExp
11458 using node = SgAsteriskShapeExp;
11459 using base = SgExpression;
11460 static constexpr char const * const name{"AsteriskShapeExp"};
11461 static constexpr unsigned long variant{296};
11462 static constexpr bool concrete{true};
11463 using subclasses_t = mp::List<>;
11464 using fields_t = mp::List<>;
11465};
11466template <> struct node_from_variant_t<296> { using type = SgAsteriskShapeExp; };
11467
11468// Class: AtOp
11469template <> struct describe_node_t<SgAtOp> {
11470 using node = SgAtOp;
11471 using base = SgBinaryOp;
11472 static constexpr char const * const name{"AtOp"};
11473 static constexpr unsigned long variant{297};
11474 static constexpr bool concrete{true};
11475 using subclasses_t = mp::List<>;
11476 using fields_t = mp::List<>;
11477};
11478template <> struct node_from_variant_t<297> { using type = SgAtOp; };
11479
11480// Class: Attribute
11481template <> struct describe_field_t<SgAttribute,std::string,&SgAttribute::p_name> {
11482 using parent = SgAttribute;
11483 using field_type = std::string;
11484 static constexpr size_t position{0};
11485 static constexpr char const * const name{"name"};
11486 static constexpr char const * const typestr{"std::string"};
11487 static constexpr bool traverse{false};
11488 static constexpr auto mbr_ptr{&SgAttribute::p_name};
11489 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11490 using bind = Desc<SgAttribute, std::string SgAttribute::*, &SgAttribute::p_name>;
11491};
11492template <> struct describe_node_t<SgAttribute> {
11493 using node = SgAttribute;
11494 using base = SgSupport;
11495 static constexpr char const * const name{"Attribute"};
11496 static constexpr unsigned long variant{298};
11497 static constexpr bool concrete{false};
11500};
11501template <> struct node_from_variant_t<298> { using type = SgAttribute; };
11502
11503// Class: AttributeSpecificationStatement
11504template <> struct describe_field_t<SgAttributeSpecificationStatement,SgStringList,&SgAttributeSpecificationStatement::p_name_list> {
11506 using field_type = SgStringList;
11507 static constexpr size_t position{0};
11508 static constexpr char const * const name{"name_list"};
11509 static constexpr char const * const typestr{"SgStringList"};
11510 static constexpr bool traverse{false};
11511 static constexpr auto mbr_ptr{&SgAttributeSpecificationStatement::p_name_list};
11512 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11513 using bind = Desc<SgAttributeSpecificationStatement, SgStringList SgAttributeSpecificationStatement::*, &SgAttributeSpecificationStatement::p_name_list>;
11514};
11515template <> struct describe_field_t<SgAttributeSpecificationStatement,SgAttributeSpecificationStatement::attribute_spec_enum,&SgAttributeSpecificationStatement::p_attribute_kind> {
11518 static constexpr size_t position{1};
11519 static constexpr char const * const name{"attribute_kind"};
11520 static constexpr char const * const typestr{"SgAttributeSpecificationStatement::attribute_spec_enum"};
11521 static constexpr bool traverse{false};
11522 static constexpr auto mbr_ptr{&SgAttributeSpecificationStatement::p_attribute_kind};
11523 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11524 using bind = Desc<SgAttributeSpecificationStatement, SgAttributeSpecificationStatement::attribute_spec_enum SgAttributeSpecificationStatement::*, &SgAttributeSpecificationStatement::p_attribute_kind>;
11525};
11526template <> struct describe_field_t<SgAttributeSpecificationStatement,int,&SgAttributeSpecificationStatement::p_intent> {
11528 using field_type = int;
11529 static constexpr size_t position{2};
11530 static constexpr char const * const name{"intent"};
11531 static constexpr char const * const typestr{"int"};
11532 static constexpr bool traverse{false};
11533 static constexpr auto mbr_ptr{&SgAttributeSpecificationStatement::p_intent};
11534 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11535 using bind = Desc<SgAttributeSpecificationStatement, int SgAttributeSpecificationStatement::*, &SgAttributeSpecificationStatement::p_intent>;
11536};
11537template <> struct describe_field_t<SgAttributeSpecificationStatement,SgExprListExp*,&SgAttributeSpecificationStatement::p_parameter_list> {
11539 using field_type = SgExprListExp*;
11540 static constexpr size_t position{3};
11541 static constexpr char const * const name{"parameter_list"};
11542 static constexpr char const * const typestr{"SgExprListExp*"};
11543 static constexpr bool traverse{false};
11544 static constexpr auto mbr_ptr{&SgAttributeSpecificationStatement::p_parameter_list};
11545 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11546 using bind = Desc<SgAttributeSpecificationStatement, SgExprListExp* SgAttributeSpecificationStatement::*, &SgAttributeSpecificationStatement::p_parameter_list>;
11547};
11548template <> struct describe_field_t<SgAttributeSpecificationStatement,SgDataStatementGroupPtrList,&SgAttributeSpecificationStatement::p_data_statement_group_list> {
11550 using field_type = SgDataStatementGroupPtrList;
11551 static constexpr size_t position{4};
11552 static constexpr char const * const name{"data_statement_group_list"};
11553 static constexpr char const * const typestr{"SgDataStatementGroupPtrList"};
11554 static constexpr bool traverse{false};
11555 static constexpr auto mbr_ptr{&SgAttributeSpecificationStatement::p_data_statement_group_list};
11556 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11557 using bind = Desc<SgAttributeSpecificationStatement, SgDataStatementGroupPtrList SgAttributeSpecificationStatement::*, &SgAttributeSpecificationStatement::p_data_statement_group_list>;
11558};
11559template <> struct describe_field_t<SgAttributeSpecificationStatement,SgExprListExp*,&SgAttributeSpecificationStatement::p_bind_list> {
11561 using field_type = SgExprListExp*;
11562 static constexpr size_t position{5};
11563 static constexpr char const * const name{"bind_list"};
11564 static constexpr char const * const typestr{"SgExprListExp*"};
11565 static constexpr bool traverse{false};
11566 static constexpr auto mbr_ptr{&SgAttributeSpecificationStatement::p_bind_list};
11567 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11568 using bind = Desc<SgAttributeSpecificationStatement, SgExprListExp* SgAttributeSpecificationStatement::*, &SgAttributeSpecificationStatement::p_bind_list>;
11569};
11570template <> struct describe_field_t<SgAttributeSpecificationStatement,SgDimensionObjectPtrList,&SgAttributeSpecificationStatement::p_dimension_object_list> {
11572 using field_type = SgDimensionObjectPtrList;
11573 static constexpr size_t position{6};
11574 static constexpr char const * const name{"dimension_object_list"};
11575 static constexpr char const * const typestr{"SgDimensionObjectPtrList"};
11576 static constexpr bool traverse{false};
11577 static constexpr auto mbr_ptr{&SgAttributeSpecificationStatement::p_dimension_object_list};
11578 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11579 using bind = Desc<SgAttributeSpecificationStatement, SgDimensionObjectPtrList SgAttributeSpecificationStatement::*, &SgAttributeSpecificationStatement::p_dimension_object_list>;
11580};
11590template <> struct node_from_variant_t<299> { using type = SgAttributeSpecificationStatement; };
11591
11592// Class: AutoType
11593template <> struct describe_node_t<SgAutoType> {
11594 using node = SgAutoType;
11595 using base = SgType;
11596 static constexpr char const * const name{"AutoType"};
11597 static constexpr unsigned long variant{300};
11598 static constexpr bool concrete{true};
11599 using subclasses_t = mp::List<>;
11600 using fields_t = mp::List<>;
11601};
11602template <> struct node_from_variant_t<300> { using type = SgAutoType; };
11603
11604// Class: AwaitExpression
11605template <> struct describe_field_t<SgAwaitExpression,SgExpression*,&SgAwaitExpression::p_value> {
11606 using parent = SgAwaitExpression;
11607 using field_type = SgExpression*;
11608 static constexpr size_t position{0};
11609 static constexpr char const * const name{"value"};
11610 static constexpr char const * const typestr{"SgExpression*"};
11611 static constexpr bool traverse{true};
11612 static constexpr auto mbr_ptr{&SgAwaitExpression::p_value};
11613 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11614 using bind = Desc<SgAwaitExpression, SgExpression* SgAwaitExpression::*, &SgAwaitExpression::p_value>;
11615};
11617 using node = SgAwaitExpression;
11618 using base = SgExpression;
11619 static constexpr char const * const name{"AwaitExpression"};
11620 static constexpr unsigned long variant{301};
11621 static constexpr bool concrete{true};
11622 using subclasses_t = mp::List<>;
11624};
11625template <> struct node_from_variant_t<301> { using type = SgAwaitExpression; };
11626
11627// Class: BackspaceStatement
11629 using node = SgBackspaceStatement;
11630 using base = SgIOStatement;
11631 static constexpr char const * const name{"BackspaceStatement"};
11632 static constexpr unsigned long variant{302};
11633 static constexpr bool concrete{true};
11634 using subclasses_t = mp::List<>;
11635 using fields_t = mp::List<>;
11636};
11637template <> struct node_from_variant_t<302> { using type = SgBackspaceStatement; };
11638
11639// Class: BaseClass
11640template <> struct describe_field_t<SgBaseClass,SgClassDeclaration*,&SgBaseClass::p_base_class> {
11641 using parent = SgBaseClass;
11643 static constexpr size_t position{0};
11644 static constexpr char const * const name{"base_class"};
11645 static constexpr char const * const typestr{"SgClassDeclaration*"};
11646 static constexpr bool traverse{true};
11647 static constexpr auto mbr_ptr{&SgBaseClass::p_base_class};
11648 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11649 using bind = Desc<SgBaseClass, SgClassDeclaration* SgBaseClass::*, &SgBaseClass::p_base_class>;
11650};
11651template <> struct describe_field_t<SgBaseClass,bool,&SgBaseClass::p_isDirectBaseClass> {
11652 using parent = SgBaseClass;
11653 using field_type = bool;
11654 static constexpr size_t position{1};
11655 static constexpr char const * const name{"isDirectBaseClass"};
11656 static constexpr char const * const typestr{"bool"};
11657 static constexpr bool traverse{false};
11658 static constexpr auto mbr_ptr{&SgBaseClass::p_isDirectBaseClass};
11659 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11660 using bind = Desc<SgBaseClass, bool SgBaseClass::*, &SgBaseClass::p_isDirectBaseClass>;
11661};
11662template <> struct describe_field_t<SgBaseClass,SgBaseClassModifier*,&SgBaseClass::p_baseClassModifier> {
11663 using parent = SgBaseClass;
11665 static constexpr size_t position{2};
11666 static constexpr char const * const name{"baseClassModifier"};
11667 static constexpr char const * const typestr{"SgBaseClassModifier*"};
11668 static constexpr bool traverse{false};
11669 static constexpr auto mbr_ptr{&SgBaseClass::p_baseClassModifier};
11670 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11671 using bind = Desc<SgBaseClass, SgBaseClassModifier* SgBaseClass::*, &SgBaseClass::p_baseClassModifier>;
11672};
11673template <> struct describe_field_t<SgBaseClass,int,&SgBaseClass::p_name_qualification_length> {
11674 using parent = SgBaseClass;
11675 using field_type = int;
11676 static constexpr size_t position{3};
11677 static constexpr char const * const name{"name_qualification_length"};
11678 static constexpr char const * const typestr{"int"};
11679 static constexpr bool traverse{false};
11680 static constexpr auto mbr_ptr{&SgBaseClass::p_name_qualification_length};
11681 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11682 using bind = Desc<SgBaseClass, int SgBaseClass::*, &SgBaseClass::p_name_qualification_length>;
11683};
11684template <> struct describe_field_t<SgBaseClass,bool,&SgBaseClass::p_type_elaboration_required> {
11685 using parent = SgBaseClass;
11686 using field_type = bool;
11687 static constexpr size_t position{4};
11688 static constexpr char const * const name{"type_elaboration_required"};
11689 static constexpr char const * const typestr{"bool"};
11690 static constexpr bool traverse{false};
11691 static constexpr auto mbr_ptr{&SgBaseClass::p_type_elaboration_required};
11692 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11693 using bind = Desc<SgBaseClass, bool SgBaseClass::*, &SgBaseClass::p_type_elaboration_required>;
11694};
11695template <> struct describe_field_t<SgBaseClass,bool,&SgBaseClass::p_global_qualification_required> {
11696 using parent = SgBaseClass;
11697 using field_type = bool;
11698 static constexpr size_t position{5};
11699 static constexpr char const * const name{"global_qualification_required"};
11700 static constexpr char const * const typestr{"bool"};
11701 static constexpr bool traverse{false};
11702 static constexpr auto mbr_ptr{&SgBaseClass::p_global_qualification_required};
11703 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11704 using bind = Desc<SgBaseClass, bool SgBaseClass::*, &SgBaseClass::p_global_qualification_required>;
11705};
11715template <> struct node_from_variant_t<303> { using type = SgBaseClass; };
11716
11717// Class: ExpBaseClass
11718template <> struct describe_field_t<SgExpBaseClass,SgExpression*,&SgExpBaseClass::p_base_class_exp> {
11719 using parent = SgExpBaseClass;
11720 using field_type = SgExpression*;
11721 static constexpr size_t position{0};
11722 static constexpr char const * const name{"base_class_exp"};
11723 static constexpr char const * const typestr{"SgExpression*"};
11724 static constexpr bool traverse{true};
11725 static constexpr auto mbr_ptr{&SgExpBaseClass::p_base_class_exp};
11726 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11727 using bind = Desc<SgExpBaseClass, SgExpression* SgExpBaseClass::*, &SgExpBaseClass::p_base_class_exp>;
11728};
11729template <> struct describe_node_t<SgExpBaseClass> {
11730 using node = SgExpBaseClass;
11731 using base = SgBaseClass;
11732 static constexpr char const * const name{"ExpBaseClass"};
11733 static constexpr unsigned long variant{304};
11734 static constexpr bool concrete{true};
11735 using subclasses_t = mp::List<>;
11737};
11738template <> struct node_from_variant_t<304> { using type = SgExpBaseClass; };
11739
11740// Class: BaseClassModifier
11741template <> struct describe_field_t<SgBaseClassModifier,SgBaseClassModifier::baseclass_modifier_enum,&SgBaseClassModifier::p_modifier> {
11744 static constexpr size_t position{0};
11745 static constexpr char const * const name{"modifier"};
11746 static constexpr char const * const typestr{"SgBaseClassModifier::baseclass_modifier_enum"};
11747 static constexpr bool traverse{false};
11748 static constexpr auto mbr_ptr{&SgBaseClassModifier::p_modifier};
11749 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11750 using bind = Desc<SgBaseClassModifier, SgBaseClassModifier::baseclass_modifier_enum SgBaseClassModifier::*, &SgBaseClassModifier::p_modifier>;
11751};
11752template <> struct describe_field_t<SgBaseClassModifier,SgAccessModifier,&SgBaseClassModifier::p_accessModifier> {
11755 static constexpr size_t position{1};
11756 static constexpr char const * const name{"accessModifier"};
11757 static constexpr char const * const typestr{"SgAccessModifier"};
11758 static constexpr bool traverse{false};
11759 static constexpr auto mbr_ptr{&SgBaseClassModifier::p_accessModifier};
11760 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11761 using bind = Desc<SgBaseClassModifier, SgAccessModifier SgBaseClassModifier::*, &SgBaseClassModifier::p_accessModifier>;
11762};
11764 using node = SgBaseClassModifier;
11765 using base = SgModifier;
11766 static constexpr char const * const name{"BaseClassModifier"};
11767 static constexpr unsigned long variant{305};
11768 static constexpr bool concrete{true};
11769 using subclasses_t = mp::List<>;
11771};
11772template <> struct node_from_variant_t<305> { using type = SgBaseClassModifier; };
11773
11774// Class: BasicBlock
11775template <> struct describe_field_t<SgBasicBlock,SgStatementPtrList,&SgBasicBlock::p_statements> {
11776 using parent = SgBasicBlock;
11777 using field_type = SgStatementPtrList;
11778 static constexpr size_t position{0};
11779 static constexpr char const * const name{"statements"};
11780 static constexpr char const * const typestr{"SgStatementPtrList"};
11781 static constexpr bool traverse{true};
11782 static constexpr auto mbr_ptr{&SgBasicBlock::p_statements};
11783 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11784 using bind = Desc<SgBasicBlock, SgStatementPtrList SgBasicBlock::*, &SgBasicBlock::p_statements>;
11785};
11786template <> struct describe_field_t<SgBasicBlock,std::string,&SgBasicBlock::p_asm_function_body> {
11787 using parent = SgBasicBlock;
11788 using field_type = std::string;
11789 static constexpr size_t position{1};
11790 static constexpr char const * const name{"asm_function_body"};
11791 static constexpr char const * const typestr{"std::string"};
11792 static constexpr bool traverse{false};
11793 static constexpr auto mbr_ptr{&SgBasicBlock::p_asm_function_body};
11794 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11795 using bind = Desc<SgBasicBlock, std::string SgBasicBlock::*, &SgBasicBlock::p_asm_function_body>;
11796};
11797template <> struct describe_field_t<SgBasicBlock,std::string,&SgBasicBlock::p_string_label> {
11798 using parent = SgBasicBlock;
11799 using field_type = std::string;
11800 static constexpr size_t position{2};
11801 static constexpr char const * const name{"string_label"};
11802 static constexpr char const * const typestr{"std::string"};
11803 static constexpr bool traverse{false};
11804 static constexpr auto mbr_ptr{&SgBasicBlock::p_string_label};
11805 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11806 using bind = Desc<SgBasicBlock, std::string SgBasicBlock::*, &SgBasicBlock::p_string_label>;
11807};
11808template <> struct describe_node_t<SgBasicBlock> {
11809 using node = SgBasicBlock;
11810 using base = SgScopeStatement;
11811 static constexpr char const * const name{"BasicBlock"};
11812 static constexpr unsigned long variant{306};
11813 static constexpr bool concrete{true};
11814 using subclasses_t = mp::List<>;
11816};
11817template <> struct node_from_variant_t<306> { using type = SgBasicBlock; };
11818
11819// Class: BidirectionalGraph
11821 using node = SgBidirectionalGraph;
11823 static constexpr char const * const name{"BidirectionalGraph"};
11824 static constexpr unsigned long variant{307};
11825 static constexpr bool concrete{false};
11827 using fields_t = mp::List<>;
11828};
11829template <> struct node_from_variant_t<307> { using type = SgBidirectionalGraph; };
11830
11831// Class: BinaryComposite
11832template <> struct describe_field_t<SgBinaryComposite,SgAsmGenericFileList*,&SgBinaryComposite::p_genericFileList> {
11833 using parent = SgBinaryComposite;
11835 static constexpr size_t position{0};
11836 static constexpr char const * const name{"genericFileList"};
11837 static constexpr char const * const typestr{"SgAsmGenericFileList*"};
11838 static constexpr bool traverse{true};
11839 static constexpr auto mbr_ptr{&SgBinaryComposite::p_genericFileList};
11840 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11841 using bind = Desc<SgBinaryComposite, SgAsmGenericFileList* SgBinaryComposite::*, &SgBinaryComposite::p_genericFileList>;
11842};
11843template <> struct describe_field_t<SgBinaryComposite,SgAsmInterpretationList*,&SgBinaryComposite::p_interpretations> {
11844 using parent = SgBinaryComposite;
11846 static constexpr size_t position{1};
11847 static constexpr char const * const name{"interpretations"};
11848 static constexpr char const * const typestr{"SgAsmInterpretationList*"};
11849 static constexpr bool traverse{true};
11850 static constexpr auto mbr_ptr{&SgBinaryComposite::p_interpretations};
11851 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11852 using bind = Desc<SgBinaryComposite, SgAsmInterpretationList* SgBinaryComposite::*, &SgBinaryComposite::p_interpretations>;
11853};
11855 using node = SgBinaryComposite;
11856 using base = SgFile;
11857 static constexpr char const * const name{"BinaryComposite"};
11858 static constexpr unsigned long variant{308};
11859 static constexpr bool concrete{true};
11862};
11863template <> struct node_from_variant_t<308> { using type = SgBinaryComposite; };
11864
11865// Class: BinaryOp
11867 using parent = SgBinaryOp;
11868 using field_type = SgExpression*;
11869 static constexpr size_t position{0};
11870 static constexpr char const * const name{"lhs_operand_i"};
11871 static constexpr char const * const typestr{"SgExpression*"};
11872 static constexpr bool traverse{true};
11873 static constexpr auto mbr_ptr{&SgBinaryOp::p_lhs_operand_i};
11874 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11875 using bind = Desc<SgBinaryOp, SgExpression* SgBinaryOp::*, &SgBinaryOp::p_lhs_operand_i>;
11876};
11878 using parent = SgBinaryOp;
11879 using field_type = SgExpression*;
11880 static constexpr size_t position{1};
11881 static constexpr char const * const name{"rhs_operand_i"};
11882 static constexpr char const * const typestr{"SgExpression*"};
11883 static constexpr bool traverse{true};
11884 static constexpr auto mbr_ptr{&SgBinaryOp::p_rhs_operand_i};
11885 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11886 using bind = Desc<SgBinaryOp, SgExpression* SgBinaryOp::*, &SgBinaryOp::p_rhs_operand_i>;
11887};
11889 using parent = SgBinaryOp;
11890 using field_type = SgType*;
11891 static constexpr size_t position{2};
11892 static constexpr char const * const name{"expression_type"};
11893 static constexpr char const * const typestr{"SgType*"};
11894 static constexpr bool traverse{false};
11895 static constexpr auto mbr_ptr{&SgBinaryOp::p_expression_type};
11896 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11897 using bind = Desc<SgBinaryOp, SgType* SgBinaryOp::*, &SgBinaryOp::p_expression_type>;
11898};
11899template <> struct describe_field_t<SgBinaryOp,SgExpression*,&SgBinaryOp::p_originalExpressionTree> {
11900 using parent = SgBinaryOp;
11901 using field_type = SgExpression*;
11902 static constexpr size_t position{3};
11903 static constexpr char const * const name{"originalExpressionTree"};
11904 static constexpr char const * const typestr{"SgExpression*"};
11905 static constexpr bool traverse{false};
11906 static constexpr auto mbr_ptr{&SgBinaryOp::p_originalExpressionTree};
11907 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11908 using bind = Desc<SgBinaryOp, SgExpression* SgBinaryOp::*, &SgBinaryOp::p_originalExpressionTree>;
11909};
11919template <> struct node_from_variant_t<309> { using type = SgBinaryOp; };
11920
11921// Class: BitAndOp
11922template <> struct describe_node_t<SgBitAndOp> {
11923 using node = SgBitAndOp;
11924 using base = SgBinaryOp;
11925 static constexpr char const * const name{"BitAndOp"};
11926 static constexpr unsigned long variant{310};
11927 static constexpr bool concrete{true};
11928 using subclasses_t = mp::List<>;
11929 using fields_t = mp::List<>;
11930};
11931template <> struct node_from_variant_t<310> { using type = SgBitAndOp; };
11932
11933// Class: BitAttribute
11934template <> struct describe_field_t<SgBitAttribute,unsigned long int,&SgBitAttribute::p_bitflag> {
11935 using parent = SgBitAttribute;
11936 using field_type = unsigned long int;
11937 static constexpr size_t position{0};
11938 static constexpr char const * const name{"bitflag"};
11939 static constexpr char const * const typestr{"unsigned long int"};
11940 static constexpr bool traverse{false};
11941 static constexpr auto mbr_ptr{&SgBitAttribute::p_bitflag};
11942 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
11943 using bind = Desc<SgBitAttribute, unsigned long int SgBitAttribute::*, &SgBitAttribute::p_bitflag>;
11944};
11945template <> struct describe_node_t<SgBitAttribute> {
11946 using node = SgBitAttribute;
11947 using base = SgAttribute;
11948 static constexpr char const * const name{"BitAttribute"};
11949 static constexpr unsigned long variant{311};
11950 static constexpr bool concrete{false};
11953};
11954template <> struct node_from_variant_t<311> { using type = SgBitAttribute; };
11955
11956// Class: BitComplementOp
11958 using node = SgBitComplementOp;
11959 using base = SgUnaryOp;
11960 static constexpr char const * const name{"BitComplementOp"};
11961 static constexpr unsigned long variant{312};
11962 static constexpr bool concrete{true};
11963 using subclasses_t = mp::List<>;
11964 using fields_t = mp::List<>;
11965};
11966template <> struct node_from_variant_t<312> { using type = SgBitComplementOp; };
11967
11968// Class: BitEqvOp
11969template <> struct describe_node_t<SgBitEqvOp> {
11970 using node = SgBitEqvOp;
11971 using base = SgBinaryOp;
11972 static constexpr char const * const name{"BitEqvOp"};
11973 static constexpr unsigned long variant{313};
11974 static constexpr bool concrete{true};
11975 using subclasses_t = mp::List<>;
11976 using fields_t = mp::List<>;
11977};
11978template <> struct node_from_variant_t<313> { using type = SgBitEqvOp; };
11979
11980// Class: BitOrOp
11981template <> struct describe_node_t<SgBitOrOp> {
11982 using node = SgBitOrOp;
11983 using base = SgBinaryOp;
11984 static constexpr char const * const name{"BitOrOp"};
11985 static constexpr unsigned long variant{314};
11986 static constexpr bool concrete{true};
11987 using subclasses_t = mp::List<>;
11988 using fields_t = mp::List<>;
11989};
11990template <> struct node_from_variant_t<314> { using type = SgBitOrOp; };
11991
11992// Class: BitXorOp
11993template <> struct describe_node_t<SgBitXorOp> {
11994 using node = SgBitXorOp;
11995 using base = SgBinaryOp;
11996 static constexpr char const * const name{"BitXorOp"};
11997 static constexpr unsigned long variant{315};
11998 static constexpr bool concrete{true};
11999 using subclasses_t = mp::List<>;
12000 using fields_t = mp::List<>;
12001};
12002template <> struct node_from_variant_t<315> { using type = SgBitXorOp; };
12003
12004// Class: BlockDataStatement
12005template <> struct describe_field_t<SgBlockDataStatement,SgBasicBlock*,&SgBlockDataStatement::p_body> {
12007 using field_type = SgBasicBlock*;
12008 static constexpr size_t position{0};
12009 static constexpr char const * const name{"body"};
12010 static constexpr char const * const typestr{"SgBasicBlock*"};
12011 static constexpr bool traverse{false};
12012 static constexpr auto mbr_ptr{&SgBlockDataStatement::p_body};
12013 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12014 using bind = Desc<SgBlockDataStatement, SgBasicBlock* SgBlockDataStatement::*, &SgBlockDataStatement::p_body>;
12015};
12017 using node = SgBlockDataStatement;
12018 using base = SgScopeStatement;
12019 static constexpr char const * const name{"BlockDataStatement"};
12020 static constexpr unsigned long variant{316};
12021 static constexpr bool concrete{true};
12022 using subclasses_t = mp::List<>;
12024};
12025template <> struct node_from_variant_t<316> { using type = SgBlockDataStatement; };
12026
12027// Class: BoolValExp
12029 using parent = SgBoolValExp;
12030 using field_type = int;
12031 static constexpr size_t position{0};
12032 static constexpr char const * const name{"value"};
12033 static constexpr char const * const typestr{"int"};
12034 static constexpr bool traverse{false};
12035 static constexpr auto mbr_ptr{&SgBoolValExp::p_value};
12036 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12037 using bind = Desc<SgBoolValExp, int SgBoolValExp::*, &SgBoolValExp::p_value>;
12038};
12039template <> struct describe_node_t<SgBoolValExp> {
12040 using node = SgBoolValExp;
12041 using base = SgValueExp;
12042 static constexpr char const * const name{"BoolValExp"};
12043 static constexpr unsigned long variant{317};
12044 static constexpr bool concrete{true};
12045 using subclasses_t = mp::List<>;
12047};
12048template <> struct node_from_variant_t<317> { using type = SgBoolValExp; };
12049
12050// Class: BreakStmt
12051template <> struct describe_field_t<SgBreakStmt,std::string,&SgBreakStmt::p_do_string_label> {
12052 using parent = SgBreakStmt;
12053 using field_type = std::string;
12054 static constexpr size_t position{0};
12055 static constexpr char const * const name{"do_string_label"};
12056 static constexpr char const * const typestr{"std::string"};
12057 static constexpr bool traverse{false};
12058 static constexpr auto mbr_ptr{&SgBreakStmt::p_do_string_label};
12059 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12060 using bind = Desc<SgBreakStmt, std::string SgBreakStmt::*, &SgBreakStmt::p_do_string_label>;
12061};
12062template <> struct describe_node_t<SgBreakStmt> {
12063 using node = SgBreakStmt;
12064 using base = SgStatement;
12065 static constexpr char const * const name{"BreakStmt"};
12066 static constexpr unsigned long variant{318};
12067 static constexpr bool concrete{true};
12068 using subclasses_t = mp::List<>;
12070};
12071template <> struct node_from_variant_t<318> { using type = SgBreakStmt; };
12072
12073// Class: BracedInitializer
12074template <> struct describe_field_t<SgBracedInitializer,SgExprListExp*,&SgBracedInitializer::p_initializers> {
12076 using field_type = SgExprListExp*;
12077 static constexpr size_t position{0};
12078 static constexpr char const * const name{"initializers"};
12079 static constexpr char const * const typestr{"SgExprListExp*"};
12080 static constexpr bool traverse{true};
12081 static constexpr auto mbr_ptr{&SgBracedInitializer::p_initializers};
12082 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12083 using bind = Desc<SgBracedInitializer, SgExprListExp* SgBracedInitializer::*, &SgBracedInitializer::p_initializers>;
12084};
12085template <> struct describe_field_t<SgBracedInitializer,SgType*,&SgBracedInitializer::p_expression_type> {
12087 using field_type = SgType*;
12088 static constexpr size_t position{1};
12089 static constexpr char const * const name{"expression_type"};
12090 static constexpr char const * const typestr{"SgType*"};
12091 static constexpr bool traverse{false};
12092 static constexpr auto mbr_ptr{&SgBracedInitializer::p_expression_type};
12093 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12094 using bind = Desc<SgBracedInitializer, SgType* SgBracedInitializer::*, &SgBracedInitializer::p_expression_type>;
12095};
12097 using node = SgBracedInitializer;
12098 using base = SgInitializer;
12099 static constexpr char const * const name{"BracedInitializer"};
12100 static constexpr unsigned long variant{319};
12101 static constexpr bool concrete{true};
12102 using subclasses_t = mp::List<>;
12104};
12105template <> struct node_from_variant_t<319> { using type = SgBracedInitializer; };
12106
12107// Class: C_PreprocessorDirectiveStatement
12108template <> struct describe_field_t<SgC_PreprocessorDirectiveStatement,std::string,&SgC_PreprocessorDirectiveStatement::p_directiveString> {
12110 using field_type = std::string;
12111 static constexpr size_t position{0};
12112 static constexpr char const * const name{"directiveString"};
12113 static constexpr char const * const typestr{"std::string"};
12114 static constexpr bool traverse{false};
12115 static constexpr auto mbr_ptr{&SgC_PreprocessorDirectiveStatement::p_directiveString};
12116 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12117 using bind = Desc<SgC_PreprocessorDirectiveStatement, std::string SgC_PreprocessorDirectiveStatement::*, &SgC_PreprocessorDirectiveStatement::p_directiveString>;
12118};
12128template <> struct node_from_variant_t<320> { using type = SgC_PreprocessorDirectiveStatement; };
12129
12130// Class: CaseOptionStmt
12131template <> struct describe_field_t<SgCaseOptionStmt,SgExpression*,&SgCaseOptionStmt::p_key> {
12132 using parent = SgCaseOptionStmt;
12133 using field_type = SgExpression*;
12134 static constexpr size_t position{0};
12135 static constexpr char const * const name{"key"};
12136 static constexpr char const * const typestr{"SgExpression*"};
12137 static constexpr bool traverse{true};
12138 static constexpr auto mbr_ptr{&SgCaseOptionStmt::p_key};
12139 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12140 using bind = Desc<SgCaseOptionStmt, SgExpression* SgCaseOptionStmt::*, &SgCaseOptionStmt::p_key>;
12141};
12143 using parent = SgCaseOptionStmt;
12144 using field_type = SgStatement*;
12145 static constexpr size_t position{1};
12146 static constexpr char const * const name{"body"};
12147 static constexpr char const * const typestr{"SgStatement*"};
12148 static constexpr bool traverse{true};
12149 static constexpr auto mbr_ptr{&SgCaseOptionStmt::p_body};
12150 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12151 using bind = Desc<SgCaseOptionStmt, SgStatement* SgCaseOptionStmt::*, &SgCaseOptionStmt::p_body>;
12152};
12154 using parent = SgCaseOptionStmt;
12155 using field_type = SgExpression*;
12156 static constexpr size_t position{2};
12157 static constexpr char const * const name{"key_range_end"};
12158 static constexpr char const * const typestr{"SgExpression*"};
12159 static constexpr bool traverse{true};
12160 static constexpr auto mbr_ptr{&SgCaseOptionStmt::p_key_range_end};
12161 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12162 using bind = Desc<SgCaseOptionStmt, SgExpression* SgCaseOptionStmt::*, &SgCaseOptionStmt::p_key_range_end>;
12163};
12164template <> struct describe_field_t<SgCaseOptionStmt,std::string,&SgCaseOptionStmt::p_case_construct_name> {
12165 using parent = SgCaseOptionStmt;
12166 using field_type = std::string;
12167 static constexpr size_t position{3};
12168 static constexpr char const * const name{"case_construct_name"};
12169 static constexpr char const * const typestr{"std::string"};
12170 static constexpr bool traverse{false};
12171 static constexpr auto mbr_ptr{&SgCaseOptionStmt::p_case_construct_name};
12172 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12173 using bind = Desc<SgCaseOptionStmt, std::string SgCaseOptionStmt::*, &SgCaseOptionStmt::p_case_construct_name>;
12174};
12175template <> struct describe_field_t<SgCaseOptionStmt,bool,&SgCaseOptionStmt::p_has_fall_through> {
12176 using parent = SgCaseOptionStmt;
12177 using field_type = bool;
12178 static constexpr size_t position{4};
12179 static constexpr char const * const name{"has_fall_through"};
12180 static constexpr char const * const typestr{"bool"};
12181 static constexpr bool traverse{false};
12182 static constexpr auto mbr_ptr{&SgCaseOptionStmt::p_has_fall_through};
12183 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12184 using bind = Desc<SgCaseOptionStmt, bool SgCaseOptionStmt::*, &SgCaseOptionStmt::p_has_fall_through>;
12185};
12195template <> struct node_from_variant_t<321> { using type = SgCaseOptionStmt; };
12196
12197// Class: CastExp
12198template <> struct describe_field_t<SgCastExp,SgCastExp::cast_type_enum,&SgCastExp::p_cast_type> {
12199 using parent = SgCastExp;
12201 static constexpr size_t position{0};
12202 static constexpr char const * const name{"cast_type"};
12203 static constexpr char const * const typestr{"SgCastExp::cast_type_enum"};
12204 static constexpr bool traverse{false};
12205 static constexpr auto mbr_ptr{&SgCastExp::p_cast_type};
12206 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12207 using bind = Desc<SgCastExp, SgCastExp::cast_type_enum SgCastExp::*, &SgCastExp::p_cast_type>;
12208};
12209template <> struct describe_field_t<SgCastExp,SgExpression*,&SgCastExp::p_originalExpressionTree> {
12210 using parent = SgCastExp;
12211 using field_type = SgExpression*;
12212 static constexpr size_t position{1};
12213 static constexpr char const * const name{"originalExpressionTree"};
12214 static constexpr char const * const typestr{"SgExpression*"};
12215 static constexpr bool traverse{false};
12216 static constexpr auto mbr_ptr{&SgCastExp::p_originalExpressionTree};
12217 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12218 using bind = Desc<SgCastExp, SgExpression* SgCastExp::*, &SgCastExp::p_originalExpressionTree>;
12219};
12220template <> struct describe_field_t<SgCastExp,int,&SgCastExp::p_name_qualification_length> {
12221 using parent = SgCastExp;
12222 using field_type = int;
12223 static constexpr size_t position{2};
12224 static constexpr char const * const name{"name_qualification_length"};
12225 static constexpr char const * const typestr{"int"};
12226 static constexpr bool traverse{false};
12227 static constexpr auto mbr_ptr{&SgCastExp::p_name_qualification_length};
12228 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12229 using bind = Desc<SgCastExp, int SgCastExp::*, &SgCastExp::p_name_qualification_length>;
12230};
12231template <> struct describe_field_t<SgCastExp,bool,&SgCastExp::p_type_elaboration_required> {
12232 using parent = SgCastExp;
12233 using field_type = bool;
12234 static constexpr size_t position{3};
12235 static constexpr char const * const name{"type_elaboration_required"};
12236 static constexpr char const * const typestr{"bool"};
12237 static constexpr bool traverse{false};
12238 static constexpr auto mbr_ptr{&SgCastExp::p_type_elaboration_required};
12239 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12240 using bind = Desc<SgCastExp, bool SgCastExp::*, &SgCastExp::p_type_elaboration_required>;
12241};
12242template <> struct describe_field_t<SgCastExp,bool,&SgCastExp::p_global_qualification_required> {
12243 using parent = SgCastExp;
12244 using field_type = bool;
12245 static constexpr size_t position{4};
12246 static constexpr char const * const name{"global_qualification_required"};
12247 static constexpr char const * const typestr{"bool"};
12248 static constexpr bool traverse{false};
12249 static constexpr auto mbr_ptr{&SgCastExp::p_global_qualification_required};
12250 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12251 using bind = Desc<SgCastExp, bool SgCastExp::*, &SgCastExp::p_global_qualification_required>;
12252};
12253template <> struct describe_field_t<SgCastExp,bool,&SgCastExp::p_castContainsBaseTypeDefiningDeclaration> {
12254 using parent = SgCastExp;
12255 using field_type = bool;
12256 static constexpr size_t position{5};
12257 static constexpr char const * const name{"castContainsBaseTypeDefiningDeclaration"};
12258 static constexpr char const * const typestr{"bool"};
12259 static constexpr bool traverse{false};
12260 static constexpr auto mbr_ptr{&SgCastExp::p_castContainsBaseTypeDefiningDeclaration};
12261 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12262 using bind = Desc<SgCastExp, bool SgCastExp::*, &SgCastExp::p_castContainsBaseTypeDefiningDeclaration>;
12263};
12264template <> struct describe_field_t<SgCastExp,int,&SgCastExp::p_name_qualification_for_pointer_to_member_class_length> {
12265 using parent = SgCastExp;
12266 using field_type = int;
12267 static constexpr size_t position{6};
12268 static constexpr char const * const name{"name_qualification_for_pointer_to_member_class_length"};
12269 static constexpr char const * const typestr{"int"};
12270 static constexpr bool traverse{false};
12271 static constexpr auto mbr_ptr{&SgCastExp::p_name_qualification_for_pointer_to_member_class_length};
12272 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12273 using bind = Desc<SgCastExp, int SgCastExp::*, &SgCastExp::p_name_qualification_for_pointer_to_member_class_length>;
12274};
12275template <> struct describe_field_t<SgCastExp,bool,&SgCastExp::p_type_elaboration_for_pointer_to_member_class_required> {
12276 using parent = SgCastExp;
12277 using field_type = bool;
12278 static constexpr size_t position{7};
12279 static constexpr char const * const name{"type_elaboration_for_pointer_to_member_class_required"};
12280 static constexpr char const * const typestr{"bool"};
12281 static constexpr bool traverse{false};
12282 static constexpr auto mbr_ptr{&SgCastExp::p_type_elaboration_for_pointer_to_member_class_required};
12283 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12284 using bind = Desc<SgCastExp, bool SgCastExp::*, &SgCastExp::p_type_elaboration_for_pointer_to_member_class_required>;
12285};
12286template <> struct describe_field_t<SgCastExp,bool,&SgCastExp::p_global_qualification_for_pointer_to_member_class_required> {
12287 using parent = SgCastExp;
12288 using field_type = bool;
12289 static constexpr size_t position{8};
12290 static constexpr char const * const name{"global_qualification_for_pointer_to_member_class_required"};
12291 static constexpr char const * const typestr{"bool"};
12292 static constexpr bool traverse{false};
12293 static constexpr auto mbr_ptr{&SgCastExp::p_global_qualification_for_pointer_to_member_class_required};
12294 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12295 using bind = Desc<SgCastExp, bool SgCastExp::*, &SgCastExp::p_global_qualification_for_pointer_to_member_class_required>;
12296};
12306template <> struct node_from_variant_t<322> { using type = SgCastExp; };
12307
12308// Class: CatchOptionStmt
12310 using parent = SgCatchOptionStmt;
12312 static constexpr size_t position{0};
12313 static constexpr char const * const name{"condition"};
12314 static constexpr char const * const typestr{"SgVariableDeclaration*"};
12315 static constexpr bool traverse{true};
12316 static constexpr auto mbr_ptr{&SgCatchOptionStmt::p_condition};
12317 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12318 using bind = Desc<SgCatchOptionStmt, SgVariableDeclaration* SgCatchOptionStmt::*, &SgCatchOptionStmt::p_condition>;
12319};
12321 using parent = SgCatchOptionStmt;
12322 using field_type = SgStatement*;
12323 static constexpr size_t position{1};
12324 static constexpr char const * const name{"body"};
12325 static constexpr char const * const typestr{"SgStatement*"};
12326 static constexpr bool traverse{true};
12327 static constexpr auto mbr_ptr{&SgCatchOptionStmt::p_body};
12328 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12329 using bind = Desc<SgCatchOptionStmt, SgStatement* SgCatchOptionStmt::*, &SgCatchOptionStmt::p_body>;
12330};
12332 using parent = SgCatchOptionStmt;
12333 using field_type = SgTryStmt*;
12334 static constexpr size_t position{2};
12335 static constexpr char const * const name{"trystmt"};
12336 static constexpr char const * const typestr{"SgTryStmt*"};
12337 static constexpr bool traverse{false};
12338 static constexpr auto mbr_ptr{&SgCatchOptionStmt::p_trystmt};
12339 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12340 using bind = Desc<SgCatchOptionStmt, SgTryStmt* SgCatchOptionStmt::*, &SgCatchOptionStmt::p_trystmt>;
12341};
12343 using node = SgCatchOptionStmt;
12344 using base = SgScopeStatement;
12345 static constexpr char const * const name{"CatchOptionStmt"};
12346 static constexpr unsigned long variant{323};
12347 static constexpr bool concrete{true};
12348 using subclasses_t = mp::List<>;
12350};
12351template <> struct node_from_variant_t<323> { using type = SgCatchOptionStmt; };
12352
12353// Class: CatchStatementSeq
12356 using field_type = SgStatementPtrList;
12357 static constexpr size_t position{0};
12358 static constexpr char const * const name{"catch_statement_seq"};
12359 static constexpr char const * const typestr{"SgStatementPtrList"};
12360 static constexpr bool traverse{true};
12361 static constexpr auto mbr_ptr{&SgCatchStatementSeq::p_catch_statement_seq};
12362 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12363 using bind = Desc<SgCatchStatementSeq, SgStatementPtrList SgCatchStatementSeq::*, &SgCatchStatementSeq::p_catch_statement_seq>;
12364};
12366 using node = SgCatchStatementSeq;
12367 using base = SgStatement;
12368 static constexpr char const * const name{"CatchStatementSeq"};
12369 static constexpr unsigned long variant{324};
12370 static constexpr bool concrete{true};
12371 using subclasses_t = mp::List<>;
12373};
12374template <> struct node_from_variant_t<324> { using type = SgCatchStatementSeq; };
12375
12376// Class: CharVal
12377template <> struct describe_field_t<SgCharVal,char,&SgCharVal::p_value> {
12378 using parent = SgCharVal;
12379 using field_type = char;
12380 static constexpr size_t position{0};
12381 static constexpr char const * const name{"value"};
12382 static constexpr char const * const typestr{"char"};
12383 static constexpr bool traverse{false};
12384 static constexpr auto mbr_ptr{&SgCharVal::p_value};
12385 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12386 using bind = Desc<SgCharVal, char SgCharVal::*, &SgCharVal::p_value>;
12387};
12388template <> struct describe_field_t<SgCharVal,std::string,&SgCharVal::p_valueString> {
12389 using parent = SgCharVal;
12390 using field_type = std::string;
12391 static constexpr size_t position{1};
12392 static constexpr char const * const name{"valueString"};
12393 static constexpr char const * const typestr{"std::string"};
12394 static constexpr bool traverse{false};
12395 static constexpr auto mbr_ptr{&SgCharVal::p_valueString};
12396 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12397 using bind = Desc<SgCharVal, std::string SgCharVal::*, &SgCharVal::p_valueString>;
12398};
12399template <> struct describe_node_t<SgCharVal> {
12400 using node = SgCharVal;
12401 using base = SgValueExp;
12402 static constexpr char const * const name{"CharVal"};
12403 static constexpr unsigned long variant{325};
12404 static constexpr bool concrete{true};
12405 using subclasses_t = mp::List<>;
12407};
12408template <> struct node_from_variant_t<325> { using type = SgCharVal; };
12409
12410// Class: Char16Val
12411template <> struct describe_field_t<SgChar16Val,unsigned short,&SgChar16Val::p_valueUL> {
12412 using parent = SgChar16Val;
12413 using field_type = unsigned short;
12414 static constexpr size_t position{0};
12415 static constexpr char const * const name{"valueUL"};
12416 static constexpr char const * const typestr{"unsigned short"};
12417 static constexpr bool traverse{false};
12418 static constexpr auto mbr_ptr{&SgChar16Val::p_valueUL};
12419 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12420 using bind = Desc<SgChar16Val, unsigned short SgChar16Val::*, &SgChar16Val::p_valueUL>;
12421};
12422template <> struct describe_field_t<SgChar16Val,std::string,&SgChar16Val::p_valueString> {
12423 using parent = SgChar16Val;
12424 using field_type = std::string;
12425 static constexpr size_t position{1};
12426 static constexpr char const * const name{"valueString"};
12427 static constexpr char const * const typestr{"std::string"};
12428 static constexpr bool traverse{false};
12429 static constexpr auto mbr_ptr{&SgChar16Val::p_valueString};
12430 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12431 using bind = Desc<SgChar16Val, std::string SgChar16Val::*, &SgChar16Val::p_valueString>;
12432};
12433template <> struct describe_node_t<SgChar16Val> {
12434 using node = SgChar16Val;
12435 using base = SgValueExp;
12436 static constexpr char const * const name{"Char16Val"};
12437 static constexpr unsigned long variant{326};
12438 static constexpr bool concrete{true};
12439 using subclasses_t = mp::List<>;
12441};
12442template <> struct node_from_variant_t<326> { using type = SgChar16Val; };
12443
12444// Class: Char32Val
12445template <> struct describe_field_t<SgChar32Val,unsigned int,&SgChar32Val::p_valueUL> {
12446 using parent = SgChar32Val;
12447 using field_type = unsigned int;
12448 static constexpr size_t position{0};
12449 static constexpr char const * const name{"valueUL"};
12450 static constexpr char const * const typestr{"unsigned int"};
12451 static constexpr bool traverse{false};
12452 static constexpr auto mbr_ptr{&SgChar32Val::p_valueUL};
12453 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12454 using bind = Desc<SgChar32Val, unsigned int SgChar32Val::*, &SgChar32Val::p_valueUL>;
12455};
12456template <> struct describe_field_t<SgChar32Val,std::string,&SgChar32Val::p_valueString> {
12457 using parent = SgChar32Val;
12458 using field_type = std::string;
12459 static constexpr size_t position{1};
12460 static constexpr char const * const name{"valueString"};
12461 static constexpr char const * const typestr{"std::string"};
12462 static constexpr bool traverse{false};
12463 static constexpr auto mbr_ptr{&SgChar32Val::p_valueString};
12464 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12465 using bind = Desc<SgChar32Val, std::string SgChar32Val::*, &SgChar32Val::p_valueString>;
12466};
12467template <> struct describe_node_t<SgChar32Val> {
12468 using node = SgChar32Val;
12469 using base = SgValueExp;
12470 static constexpr char const * const name{"Char32Val"};
12471 static constexpr unsigned long variant{327};
12472 static constexpr bool concrete{true};
12473 using subclasses_t = mp::List<>;
12475};
12476template <> struct node_from_variant_t<327> { using type = SgChar32Val; };
12477
12478// Class: ChooseExpression
12479template <> struct describe_field_t<SgChooseExpression,SgExpression*,&SgChooseExpression::p_value> {
12480 using parent = SgChooseExpression;
12481 using field_type = SgExpression*;
12482 static constexpr size_t position{0};
12483 static constexpr char const * const name{"value"};
12484 static constexpr char const * const typestr{"SgExpression*"};
12485 static constexpr bool traverse{true};
12486 static constexpr auto mbr_ptr{&SgChooseExpression::p_value};
12487 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12488 using bind = Desc<SgChooseExpression, SgExpression* SgChooseExpression::*, &SgChooseExpression::p_value>;
12489};
12491 using node = SgChooseExpression;
12492 using base = SgExpression;
12493 static constexpr char const * const name{"ChooseExpression"};
12494 static constexpr unsigned long variant{328};
12495 static constexpr bool concrete{true};
12496 using subclasses_t = mp::List<>;
12498};
12499template <> struct node_from_variant_t<328> { using type = SgChooseExpression; };
12500
12501// Class: ClassDecl_attr
12503 using node = SgClassDecl_attr;
12504 using base = SgBitAttribute;
12505 static constexpr char const * const name{"ClassDecl_attr"};
12506 static constexpr unsigned long variant{329};
12507 static constexpr bool concrete{true};
12508 using subclasses_t = mp::List<>;
12509 using fields_t = mp::List<>;
12510};
12511template <> struct node_from_variant_t<329> { using type = SgClassDecl_attr; };
12512
12513// Class: ClassDeclaration
12515 using parent = SgClassDeclaration;
12516 using field_type = SgName;
12517 static constexpr size_t position{0};
12518 static constexpr char const * const name{"name"};
12519 static constexpr char const * const typestr{"SgName"};
12520 static constexpr bool traverse{false};
12521 static constexpr auto mbr_ptr{&SgClassDeclaration::p_name};
12522 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12523 using bind = Desc<SgClassDeclaration, SgName SgClassDeclaration::*, &SgClassDeclaration::p_name>;
12524};
12526 using parent = SgClassDeclaration;
12528 static constexpr size_t position{1};
12529 static constexpr char const * const name{"class_type"};
12530 static constexpr char const * const typestr{"SgClassDeclaration::class_types"};
12531 static constexpr bool traverse{false};
12532 static constexpr auto mbr_ptr{&SgClassDeclaration::p_class_type};
12533 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12534 using bind = Desc<SgClassDeclaration, SgClassDeclaration::class_types SgClassDeclaration::*, &SgClassDeclaration::p_class_type>;
12535};
12537 using parent = SgClassDeclaration;
12538 using field_type = SgClassType*;
12539 static constexpr size_t position{2};
12540 static constexpr char const * const name{"type"};
12541 static constexpr char const * const typestr{"SgClassType*"};
12542 static constexpr bool traverse{false};
12543 static constexpr auto mbr_ptr{&SgClassDeclaration::p_type};
12544 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12545 using bind = Desc<SgClassDeclaration, SgClassType* SgClassDeclaration::*, &SgClassDeclaration::p_type>;
12546};
12548 using parent = SgClassDeclaration;
12550 static constexpr size_t position{3};
12551 static constexpr char const * const name{"definition"};
12552 static constexpr char const * const typestr{"SgClassDefinition*"};
12553 static constexpr bool traverse{true};
12554 static constexpr auto mbr_ptr{&SgClassDeclaration::p_definition};
12555 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12556 using bind = Desc<SgClassDeclaration, SgClassDefinition* SgClassDeclaration::*, &SgClassDeclaration::p_definition>;
12557};
12558template <> struct describe_field_t<SgClassDeclaration,SgScopeStatement*,&SgClassDeclaration::p_scope> {
12559 using parent = SgClassDeclaration;
12561 static constexpr size_t position{4};
12562 static constexpr char const * const name{"scope"};
12563 static constexpr char const * const typestr{"SgScopeStatement*"};
12564 static constexpr bool traverse{false};
12565 static constexpr auto mbr_ptr{&SgClassDeclaration::p_scope};
12566 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12567 using bind = Desc<SgClassDeclaration, SgScopeStatement* SgClassDeclaration::*, &SgClassDeclaration::p_scope>;
12568};
12569template <> struct describe_field_t<SgClassDeclaration,SgDeclarationStatement::template_specialization_enum,&SgClassDeclaration::p_specialization> {
12570 using parent = SgClassDeclaration;
12572 static constexpr size_t position{5};
12573 static constexpr char const * const name{"specialization"};
12574 static constexpr char const * const typestr{"SgDeclarationStatement::template_specialization_enum"};
12575 static constexpr bool traverse{false};
12576 static constexpr auto mbr_ptr{&SgClassDeclaration::p_specialization};
12577 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12578 using bind = Desc<SgClassDeclaration, SgDeclarationStatement::template_specialization_enum SgClassDeclaration::*, &SgClassDeclaration::p_specialization>;
12579};
12581 using parent = SgClassDeclaration;
12582 using field_type = bool;
12583 static constexpr size_t position{6};
12584 static constexpr char const * const name{"from_template"};
12585 static constexpr char const * const typestr{"bool"};
12586 static constexpr bool traverse{false};
12587 static constexpr auto mbr_ptr{&SgClassDeclaration::p_from_template};
12588 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12589 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_from_template>;
12590};
12591template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_fixupScope> {
12592 using parent = SgClassDeclaration;
12593 using field_type = bool;
12594 static constexpr size_t position{7};
12595 static constexpr char const * const name{"fixupScope"};
12596 static constexpr char const * const typestr{"bool"};
12597 static constexpr bool traverse{false};
12598 static constexpr auto mbr_ptr{&SgClassDeclaration::p_fixupScope};
12599 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12600 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_fixupScope>;
12601};
12602template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_isUnNamed> {
12603 using parent = SgClassDeclaration;
12604 using field_type = bool;
12605 static constexpr size_t position{8};
12606 static constexpr char const * const name{"isUnNamed"};
12607 static constexpr char const * const typestr{"bool"};
12608 static constexpr bool traverse{false};
12609 static constexpr auto mbr_ptr{&SgClassDeclaration::p_isUnNamed};
12610 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12611 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_isUnNamed>;
12612};
12613template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_annotation_interface> {
12614 using parent = SgClassDeclaration;
12615 using field_type = bool;
12616 static constexpr size_t position{9};
12617 static constexpr char const * const name{"explicit_annotation_interface"};
12618 static constexpr char const * const typestr{"bool"};
12619 static constexpr bool traverse{false};
12620 static constexpr auto mbr_ptr{&SgClassDeclaration::p_explicit_annotation_interface};
12621 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12622 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_explicit_annotation_interface>;
12623};
12624template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_interface> {
12625 using parent = SgClassDeclaration;
12626 using field_type = bool;
12627 static constexpr size_t position{10};
12628 static constexpr char const * const name{"explicit_interface"};
12629 static constexpr char const * const typestr{"bool"};
12630 static constexpr bool traverse{false};
12631 static constexpr auto mbr_ptr{&SgClassDeclaration::p_explicit_interface};
12632 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12633 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_explicit_interface>;
12634};
12635template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_enum> {
12636 using parent = SgClassDeclaration;
12637 using field_type = bool;
12638 static constexpr size_t position{11};
12639 static constexpr char const * const name{"explicit_enum"};
12640 static constexpr char const * const typestr{"bool"};
12641 static constexpr bool traverse{false};
12642 static constexpr auto mbr_ptr{&SgClassDeclaration::p_explicit_enum};
12643 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12644 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_explicit_enum>;
12645};
12646template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_anonymous> {
12647 using parent = SgClassDeclaration;
12648 using field_type = bool;
12649 static constexpr size_t position{12};
12650 static constexpr char const * const name{"explicit_anonymous"};
12651 static constexpr char const * const typestr{"bool"};
12652 static constexpr bool traverse{false};
12653 static constexpr auto mbr_ptr{&SgClassDeclaration::p_explicit_anonymous};
12654 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12655 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_explicit_anonymous>;
12656};
12657template <> struct describe_field_t<SgClassDeclaration,SgExprListExp*,&SgClassDeclaration::p_decoratorList> {
12658 using parent = SgClassDeclaration;
12659 using field_type = SgExprListExp*;
12660 static constexpr size_t position{13};
12661 static constexpr char const * const name{"decoratorList"};
12662 static constexpr char const * const typestr{"SgExprListExp*"};
12663 static constexpr bool traverse{true};
12664 static constexpr auto mbr_ptr{&SgClassDeclaration::p_decoratorList};
12665 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12666 using bind = Desc<SgClassDeclaration, SgExprListExp* SgClassDeclaration::*, &SgClassDeclaration::p_decoratorList>;
12667};
12668template <> struct describe_field_t<SgClassDeclaration,int,&SgClassDeclaration::p_name_qualification_length> {
12669 using parent = SgClassDeclaration;
12670 using field_type = int;
12671 static constexpr size_t position{14};
12672 static constexpr char const * const name{"name_qualification_length"};
12673 static constexpr char const * const typestr{"int"};
12674 static constexpr bool traverse{false};
12675 static constexpr auto mbr_ptr{&SgClassDeclaration::p_name_qualification_length};
12676 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12677 using bind = Desc<SgClassDeclaration, int SgClassDeclaration::*, &SgClassDeclaration::p_name_qualification_length>;
12678};
12679template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_type_elaboration_required> {
12680 using parent = SgClassDeclaration;
12681 using field_type = bool;
12682 static constexpr size_t position{15};
12683 static constexpr char const * const name{"type_elaboration_required"};
12684 static constexpr char const * const typestr{"bool"};
12685 static constexpr bool traverse{false};
12686 static constexpr auto mbr_ptr{&SgClassDeclaration::p_type_elaboration_required};
12687 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12688 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_type_elaboration_required>;
12689};
12690template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_global_qualification_required> {
12691 using parent = SgClassDeclaration;
12692 using field_type = bool;
12693 static constexpr size_t position{16};
12694 static constexpr char const * const name{"global_qualification_required"};
12695 static constexpr char const * const typestr{"bool"};
12696 static constexpr bool traverse{false};
12697 static constexpr auto mbr_ptr{&SgClassDeclaration::p_global_qualification_required};
12698 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12699 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_global_qualification_required>;
12700};
12701template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_isAutonomousDeclaration> {
12702 using parent = SgClassDeclaration;
12703 using field_type = bool;
12704 static constexpr size_t position{17};
12705 static constexpr char const * const name{"isAutonomousDeclaration"};
12706 static constexpr char const * const typestr{"bool"};
12707 static constexpr bool traverse{false};
12708 static constexpr auto mbr_ptr{&SgClassDeclaration::p_isAutonomousDeclaration};
12709 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12710 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_isAutonomousDeclaration>;
12711};
12712template <> struct describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_isRepresentingTemplateParameterInTemplateDeclaration> {
12713 using parent = SgClassDeclaration;
12714 using field_type = bool;
12715 static constexpr size_t position{18};
12716 static constexpr char const * const name{"isRepresentingTemplateParameterInTemplateDeclaration"};
12717 static constexpr char const * const typestr{"bool"};
12718 static constexpr bool traverse{false};
12719 static constexpr auto mbr_ptr{&SgClassDeclaration::p_isRepresentingTemplateParameterInTemplateDeclaration};
12720 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12721 using bind = Desc<SgClassDeclaration, bool SgClassDeclaration::*, &SgClassDeclaration::p_isRepresentingTemplateParameterInTemplateDeclaration>;
12722};
12723template <> struct describe_field_t<SgClassDeclaration,SgBaseClass*,&SgClassDeclaration::p_adaParentType> {
12724 using parent = SgClassDeclaration;
12725 using field_type = SgBaseClass*;
12726 static constexpr size_t position{19};
12727 static constexpr char const * const name{"adaParentType"};
12728 static constexpr char const * const typestr{"SgBaseClass*"};
12729 static constexpr bool traverse{false};
12730 static constexpr auto mbr_ptr{&SgClassDeclaration::p_adaParentType};
12731 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12732 using bind = Desc<SgClassDeclaration, SgBaseClass* SgClassDeclaration::*, &SgClassDeclaration::p_adaParentType>;
12733};
12735 using node = SgClassDeclaration;
12737 static constexpr char const * const name{"ClassDeclaration"};
12738 static constexpr unsigned long variant{330};
12739 static constexpr bool concrete{true};
12741 using fields_t = mp::List<describe_field_t<SgClassDeclaration,SgName,&SgClassDeclaration::p_name>, describe_field_t<SgClassDeclaration,SgClassDeclaration::class_types,&SgClassDeclaration::p_class_type>, describe_field_t<SgClassDeclaration,SgClassType*,&SgClassDeclaration::p_type>, describe_field_t<SgClassDeclaration,SgClassDefinition*,&SgClassDeclaration::p_definition>, describe_field_t<SgClassDeclaration,SgScopeStatement*,&SgClassDeclaration::p_scope>, describe_field_t<SgClassDeclaration,SgDeclarationStatement::template_specialization_enum,&SgClassDeclaration::p_specialization>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_from_template>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_fixupScope>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_isUnNamed>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_annotation_interface>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_interface>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_enum>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_explicit_anonymous>, describe_field_t<SgClassDeclaration,SgExprListExp*,&SgClassDeclaration::p_decoratorList>, describe_field_t<SgClassDeclaration,int,&SgClassDeclaration::p_name_qualification_length>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_type_elaboration_required>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_global_qualification_required>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_isAutonomousDeclaration>, describe_field_t<SgClassDeclaration,bool,&SgClassDeclaration::p_isRepresentingTemplateParameterInTemplateDeclaration>, describe_field_t<SgClassDeclaration,SgBaseClass*,&SgClassDeclaration::p_adaParentType>>;
12742};
12743template <> struct node_from_variant_t<330> { using type = SgClassDeclaration; };
12744
12745// Class: ClassDefinition
12746template <> struct describe_field_t<SgClassDefinition,SgDeclarationStatementPtrList,&SgClassDefinition::p_members> {
12747 using parent = SgClassDefinition;
12748 using field_type = SgDeclarationStatementPtrList;
12749 static constexpr size_t position{0};
12750 static constexpr char const * const name{"members"};
12751 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
12752 static constexpr bool traverse{true};
12753 static constexpr auto mbr_ptr{&SgClassDefinition::p_members};
12754 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12755 using bind = Desc<SgClassDefinition, SgDeclarationStatementPtrList SgClassDefinition::*, &SgClassDefinition::p_members>;
12756};
12758 using parent = SgClassDefinition;
12759 using field_type = SgBaseClassPtrList;
12760 static constexpr size_t position{1};
12761 static constexpr char const * const name{"inheritances"};
12762 static constexpr char const * const typestr{"SgBaseClassPtrList"};
12763 static constexpr bool traverse{false};
12764 static constexpr auto mbr_ptr{&SgClassDefinition::p_inheritances};
12765 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12766 using bind = Desc<SgClassDefinition, SgBaseClassPtrList SgClassDefinition::*, &SgClassDefinition::p_inheritances>;
12767};
12768template <> struct describe_field_t<SgClassDefinition,unsigned int,&SgClassDefinition::p_packingAlignment> {
12769 using parent = SgClassDefinition;
12770 using field_type = unsigned int;
12771 static constexpr size_t position{2};
12772 static constexpr char const * const name{"packingAlignment"};
12773 static constexpr char const * const typestr{"unsigned int"};
12774 static constexpr bool traverse{false};
12775 static constexpr auto mbr_ptr{&SgClassDefinition::p_packingAlignment};
12776 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12777 using bind = Desc<SgClassDefinition, unsigned int SgClassDefinition::*, &SgClassDefinition::p_packingAlignment>;
12778};
12779template <> struct describe_field_t<SgClassDefinition,bool,&SgClassDefinition::p_isSequence> {
12780 using parent = SgClassDefinition;
12781 using field_type = bool;
12782 static constexpr size_t position{3};
12783 static constexpr char const * const name{"isSequence"};
12784 static constexpr char const * const typestr{"bool"};
12785 static constexpr bool traverse{false};
12786 static constexpr auto mbr_ptr{&SgClassDefinition::p_isSequence};
12787 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12788 using bind = Desc<SgClassDefinition, bool SgClassDefinition::*, &SgClassDefinition::p_isSequence>;
12789};
12790template <> struct describe_field_t<SgClassDefinition,bool,&SgClassDefinition::p_isPrivate> {
12791 using parent = SgClassDefinition;
12792 using field_type = bool;
12793 static constexpr size_t position{4};
12794 static constexpr char const * const name{"isPrivate"};
12795 static constexpr char const * const typestr{"bool"};
12796 static constexpr bool traverse{false};
12797 static constexpr auto mbr_ptr{&SgClassDefinition::p_isPrivate};
12798 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12799 using bind = Desc<SgClassDefinition, bool SgClassDefinition::*, &SgClassDefinition::p_isPrivate>;
12800};
12801template <> struct describe_field_t<SgClassDefinition,bool,&SgClassDefinition::p_isAbstract> {
12802 using parent = SgClassDefinition;
12803 using field_type = bool;
12804 static constexpr size_t position{5};
12805 static constexpr char const * const name{"isAbstract"};
12806 static constexpr char const * const typestr{"bool"};
12807 static constexpr bool traverse{false};
12808 static constexpr auto mbr_ptr{&SgClassDefinition::p_isAbstract};
12809 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12810 using bind = Desc<SgClassDefinition, bool SgClassDefinition::*, &SgClassDefinition::p_isAbstract>;
12811};
12821template <> struct node_from_variant_t<331> { using type = SgClassDefinition; };
12822
12823// Class: ClassNameRefExp
12825 using parent = SgClassNameRefExp;
12826 using field_type = SgClassSymbol*;
12827 static constexpr size_t position{0};
12828 static constexpr char const * const name{"symbol"};
12829 static constexpr char const * const typestr{"SgClassSymbol*"};
12830 static constexpr bool traverse{false};
12831 static constexpr auto mbr_ptr{&SgClassNameRefExp::p_symbol};
12832 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12833 using bind = Desc<SgClassNameRefExp, SgClassSymbol* SgClassNameRefExp::*, &SgClassNameRefExp::p_symbol>;
12834};
12836 using node = SgClassNameRefExp;
12837 using base = SgExpression;
12838 static constexpr char const * const name{"ClassNameRefExp"};
12839 static constexpr unsigned long variant{332};
12840 static constexpr bool concrete{true};
12841 using subclasses_t = mp::List<>;
12843};
12844template <> struct node_from_variant_t<332> { using type = SgClassNameRefExp; };
12845
12846// Class: ClassSymbol
12847template <> struct describe_field_t<SgClassSymbol,SgClassDeclaration*,&SgClassSymbol::p_declaration> {
12848 using parent = SgClassSymbol;
12850 static constexpr size_t position{0};
12851 static constexpr char const * const name{"declaration"};
12852 static constexpr char const * const typestr{"SgClassDeclaration*"};
12853 static constexpr bool traverse{true};
12854 static constexpr auto mbr_ptr{&SgClassSymbol::p_declaration};
12855 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12856 using bind = Desc<SgClassSymbol, SgClassDeclaration* SgClassSymbol::*, &SgClassSymbol::p_declaration>;
12857};
12858template <> struct describe_node_t<SgClassSymbol> {
12859 using node = SgClassSymbol;
12860 using base = SgSymbol;
12861 static constexpr char const * const name{"ClassSymbol"};
12862 static constexpr unsigned long variant{333};
12863 static constexpr bool concrete{true};
12866};
12867template <> struct node_from_variant_t<333> { using type = SgClassSymbol; };
12868
12869// Class: ClassType
12870template <> struct describe_field_t<SgClassType,bool,&SgClassType::p_packed> {
12871 using parent = SgClassType;
12872 using field_type = bool;
12873 static constexpr size_t position{0};
12874 static constexpr char const * const name{"packed"};
12875 static constexpr char const * const typestr{"bool"};
12876 static constexpr bool traverse{false};
12877 static constexpr auto mbr_ptr{&SgClassType::p_packed};
12878 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12879 using bind = Desc<SgClassType, bool SgClassType::*, &SgClassType::p_packed>;
12880};
12881template <> struct describe_node_t<SgClassType> {
12882 using node = SgClassType;
12883 using base = SgNamedType;
12884 static constexpr char const * const name{"ClassType"};
12885 static constexpr unsigned long variant{334};
12886 static constexpr bool concrete{true};
12889};
12890template <> struct node_from_variant_t<334> { using type = SgClassType; };
12891
12892// Class: ClinkageDeclarationStatement
12893template <> struct describe_field_t<SgClinkageDeclarationStatement,std::string,&SgClinkageDeclarationStatement::p_languageSpecifier> {
12895 using field_type = std::string;
12896 static constexpr size_t position{0};
12897 static constexpr char const * const name{"languageSpecifier"};
12898 static constexpr char const * const typestr{"std::string"};
12899 static constexpr bool traverse{false};
12900 static constexpr auto mbr_ptr{&SgClinkageDeclarationStatement::p_languageSpecifier};
12901 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12902 using bind = Desc<SgClinkageDeclarationStatement, std::string SgClinkageDeclarationStatement::*, &SgClinkageDeclarationStatement::p_languageSpecifier>;
12903};
12907 static constexpr char const * const name{"ClinkageDeclarationStatement"};
12908 static constexpr unsigned long variant{335};
12909 static constexpr bool concrete{false};
12912};
12913template <> struct node_from_variant_t<335> { using type = SgClinkageDeclarationStatement; };
12914
12915// Class: ClinkageEndStatement
12919 static constexpr char const * const name{"ClinkageEndStatement"};
12920 static constexpr unsigned long variant{336};
12921 static constexpr bool concrete{true};
12922 using subclasses_t = mp::List<>;
12923 using fields_t = mp::List<>;
12924};
12925template <> struct node_from_variant_t<336> { using type = SgClinkageEndStatement; };
12926
12927// Class: ClinkageStartStatement
12931 static constexpr char const * const name{"ClinkageStartStatement"};
12932 static constexpr unsigned long variant{337};
12933 static constexpr bool concrete{true};
12934 using subclasses_t = mp::List<>;
12935 using fields_t = mp::List<>;
12936};
12937template <> struct node_from_variant_t<337> { using type = SgClinkageStartStatement; };
12938
12939// Class: CloseStatement
12940template <> struct describe_field_t<SgCloseStatement,SgExpression*,&SgCloseStatement::p_status> {
12941 using parent = SgCloseStatement;
12942 using field_type = SgExpression*;
12943 static constexpr size_t position{0};
12944 static constexpr char const * const name{"status"};
12945 static constexpr char const * const typestr{"SgExpression*"};
12946 static constexpr bool traverse{true};
12947 static constexpr auto mbr_ptr{&SgCloseStatement::p_status};
12948 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12949 using bind = Desc<SgCloseStatement, SgExpression* SgCloseStatement::*, &SgCloseStatement::p_status>;
12950};
12952 using node = SgCloseStatement;
12953 using base = SgIOStatement;
12954 static constexpr char const * const name{"CloseStatement"};
12955 static constexpr unsigned long variant{338};
12956 static constexpr bool concrete{true};
12957 using subclasses_t = mp::List<>;
12959};
12960template <> struct node_from_variant_t<338> { using type = SgCloseStatement; };
12961
12962// Class: ColonShapeExp
12964 using node = SgColonShapeExp;
12965 using base = SgExpression;
12966 static constexpr char const * const name{"ColonShapeExp"};
12967 static constexpr unsigned long variant{339};
12968 static constexpr bool concrete{true};
12969 using subclasses_t = mp::List<>;
12970 using fields_t = mp::List<>;
12971};
12972template <> struct node_from_variant_t<339> { using type = SgColonShapeExp; };
12973
12974// Class: CommaOpExp
12975template <> struct describe_node_t<SgCommaOpExp> {
12976 using node = SgCommaOpExp;
12977 using base = SgBinaryOp;
12978 static constexpr char const * const name{"CommaOpExp"};
12979 static constexpr unsigned long variant{340};
12980 static constexpr bool concrete{true};
12981 using subclasses_t = mp::List<>;
12982 using fields_t = mp::List<>;
12983};
12984template <> struct node_from_variant_t<340> { using type = SgCommaOpExp; };
12985
12986// Class: CommonBlock
12987template <> struct describe_field_t<SgCommonBlock,SgCommonBlockObjectPtrList,&SgCommonBlock::p_block_list> {
12988 using parent = SgCommonBlock;
12989 using field_type = SgCommonBlockObjectPtrList;
12990 static constexpr size_t position{0};
12991 static constexpr char const * const name{"block_list"};
12992 static constexpr char const * const typestr{"SgCommonBlockObjectPtrList"};
12993 static constexpr bool traverse{true};
12994 static constexpr auto mbr_ptr{&SgCommonBlock::p_block_list};
12995 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
12996 using bind = Desc<SgCommonBlock, SgCommonBlockObjectPtrList SgCommonBlock::*, &SgCommonBlock::p_block_list>;
12997};
12998template <> struct describe_node_t<SgCommonBlock> {
12999 using node = SgCommonBlock;
13001 static constexpr char const * const name{"CommonBlock"};
13002 static constexpr unsigned long variant{341};
13003 static constexpr bool concrete{true};
13004 using subclasses_t = mp::List<>;
13006};
13007template <> struct node_from_variant_t<341> { using type = SgCommonBlock; };
13008
13009// Class: CommonBlockObject
13010template <> struct describe_field_t<SgCommonBlockObject,std::string,&SgCommonBlockObject::p_block_name> {
13012 using field_type = std::string;
13013 static constexpr size_t position{0};
13014 static constexpr char const * const name{"block_name"};
13015 static constexpr char const * const typestr{"std::string"};
13016 static constexpr bool traverse{false};
13017 static constexpr auto mbr_ptr{&SgCommonBlockObject::p_block_name};
13018 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13019 using bind = Desc<SgCommonBlockObject, std::string SgCommonBlockObject::*, &SgCommonBlockObject::p_block_name>;
13020};
13021template <> struct describe_field_t<SgCommonBlockObject,SgExprListExp*,&SgCommonBlockObject::p_variable_reference_list> {
13023 using field_type = SgExprListExp*;
13024 static constexpr size_t position{1};
13025 static constexpr char const * const name{"variable_reference_list"};
13026 static constexpr char const * const typestr{"SgExprListExp*"};
13027 static constexpr bool traverse{true};
13028 static constexpr auto mbr_ptr{&SgCommonBlockObject::p_variable_reference_list};
13029 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13030 using bind = Desc<SgCommonBlockObject, SgExprListExp* SgCommonBlockObject::*, &SgCommonBlockObject::p_variable_reference_list>;
13031};
13033 using node = SgCommonBlockObject;
13034 using base = SgLocatedNodeSupport;
13035 static constexpr char const * const name{"CommonBlockObject"};
13036 static constexpr unsigned long variant{342};
13037 static constexpr bool concrete{true};
13038 using subclasses_t = mp::List<>;
13040};
13041template <> struct node_from_variant_t<342> { using type = SgCommonBlockObject; };
13042
13043// Class: CommonSymbol
13044template <> struct describe_field_t<SgCommonSymbol,SgInitializedName*,&SgCommonSymbol::p_declaration> {
13045 using parent = SgCommonSymbol;
13047 static constexpr size_t position{0};
13048 static constexpr char const * const name{"declaration"};
13049 static constexpr char const * const typestr{"SgInitializedName*"};
13050 static constexpr bool traverse{false};
13051 static constexpr auto mbr_ptr{&SgCommonSymbol::p_declaration};
13052 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13053 using bind = Desc<SgCommonSymbol, SgInitializedName* SgCommonSymbol::*, &SgCommonSymbol::p_declaration>;
13054};
13055template <> struct describe_node_t<SgCommonSymbol> {
13056 using node = SgCommonSymbol;
13057 using base = SgSymbol;
13058 static constexpr char const * const name{"CommonSymbol"};
13059 static constexpr unsigned long variant{343};
13060 static constexpr bool concrete{true};
13061 using subclasses_t = mp::List<>;
13063};
13064template <> struct node_from_variant_t<343> { using type = SgCommonSymbol; };
13065
13066// Class: ComplexVal
13067template <> struct describe_field_t<SgComplexVal,SgValueExp*,&SgComplexVal::p_real_value> {
13068 using parent = SgComplexVal;
13069 using field_type = SgValueExp*;
13070 static constexpr size_t position{0};
13071 static constexpr char const * const name{"real_value"};
13072 static constexpr char const * const typestr{"SgValueExp*"};
13073 static constexpr bool traverse{true};
13074 static constexpr auto mbr_ptr{&SgComplexVal::p_real_value};
13075 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13076 using bind = Desc<SgComplexVal, SgValueExp* SgComplexVal::*, &SgComplexVal::p_real_value>;
13077};
13078template <> struct describe_field_t<SgComplexVal,SgValueExp*,&SgComplexVal::p_imaginary_value> {
13079 using parent = SgComplexVal;
13080 using field_type = SgValueExp*;
13081 static constexpr size_t position{1};
13082 static constexpr char const * const name{"imaginary_value"};
13083 static constexpr char const * const typestr{"SgValueExp*"};
13084 static constexpr bool traverse{true};
13085 static constexpr auto mbr_ptr{&SgComplexVal::p_imaginary_value};
13086 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13087 using bind = Desc<SgComplexVal, SgValueExp* SgComplexVal::*, &SgComplexVal::p_imaginary_value>;
13088};
13089template <> struct describe_field_t<SgComplexVal,SgType*,&SgComplexVal::p_precisionType> {
13090 using parent = SgComplexVal;
13091 using field_type = SgType*;
13092 static constexpr size_t position{2};
13093 static constexpr char const * const name{"precisionType"};
13094 static constexpr char const * const typestr{"SgType*"};
13095 static constexpr bool traverse{false};
13096 static constexpr auto mbr_ptr{&SgComplexVal::p_precisionType};
13097 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13098 using bind = Desc<SgComplexVal, SgType* SgComplexVal::*, &SgComplexVal::p_precisionType>;
13099};
13100template <> struct describe_field_t<SgComplexVal,std::string,&SgComplexVal::p_valueString> {
13101 using parent = SgComplexVal;
13102 using field_type = std::string;
13103 static constexpr size_t position{3};
13104 static constexpr char const * const name{"valueString"};
13105 static constexpr char const * const typestr{"std::string"};
13106 static constexpr bool traverse{false};
13107 static constexpr auto mbr_ptr{&SgComplexVal::p_valueString};
13108 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13109 using bind = Desc<SgComplexVal, std::string SgComplexVal::*, &SgComplexVal::p_valueString>;
13110};
13111template <> struct describe_node_t<SgComplexVal> {
13112 using node = SgComplexVal;
13113 using base = SgValueExp;
13114 static constexpr char const * const name{"ComplexVal"};
13115 static constexpr unsigned long variant{344};
13116 static constexpr bool concrete{true};
13117 using subclasses_t = mp::List<>;
13119};
13120template <> struct node_from_variant_t<344> { using type = SgComplexVal; };
13121
13122// Class: Comprehension
13123template <> struct describe_field_t<SgComprehension,SgExpression*,&SgComprehension::p_target> {
13124 using parent = SgComprehension;
13125 using field_type = SgExpression*;
13126 static constexpr size_t position{0};
13127 static constexpr char const * const name{"target"};
13128 static constexpr char const * const typestr{"SgExpression*"};
13129 static constexpr bool traverse{true};
13130 static constexpr auto mbr_ptr{&SgComprehension::p_target};
13131 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13132 using bind = Desc<SgComprehension, SgExpression* SgComprehension::*, &SgComprehension::p_target>;
13133};
13134template <> struct describe_field_t<SgComprehension,SgExpression*,&SgComprehension::p_iter> {
13135 using parent = SgComprehension;
13136 using field_type = SgExpression*;
13137 static constexpr size_t position{1};
13138 static constexpr char const * const name{"iter"};
13139 static constexpr char const * const typestr{"SgExpression*"};
13140 static constexpr bool traverse{true};
13141 static constexpr auto mbr_ptr{&SgComprehension::p_iter};
13142 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13143 using bind = Desc<SgComprehension, SgExpression* SgComprehension::*, &SgComprehension::p_iter>;
13144};
13145template <> struct describe_field_t<SgComprehension,SgExprListExp*,&SgComprehension::p_filters> {
13146 using parent = SgComprehension;
13147 using field_type = SgExprListExp*;
13148 static constexpr size_t position{2};
13149 static constexpr char const * const name{"filters"};
13150 static constexpr char const * const typestr{"SgExprListExp*"};
13151 static constexpr bool traverse{true};
13152 static constexpr auto mbr_ptr{&SgComprehension::p_filters};
13153 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13154 using bind = Desc<SgComprehension, SgExprListExp* SgComprehension::*, &SgComprehension::p_filters>;
13155};
13157 using node = SgComprehension;
13158 using base = SgExpression;
13159 static constexpr char const * const name{"Comprehension"};
13160 static constexpr unsigned long variant{345};
13161 static constexpr bool concrete{true};
13162 using subclasses_t = mp::List<>;
13164};
13165template <> struct node_from_variant_t<345> { using type = SgComprehension; };
13166
13167// Class: CompoundAssignOp
13169 using node = SgCompoundAssignOp;
13170 using base = SgBinaryOp;
13171 static constexpr char const * const name{"CompoundAssignOp"};
13172 static constexpr unsigned long variant{347};
13173 static constexpr bool concrete{false};
13175 using fields_t = mp::List<>;
13176};
13177template <> struct node_from_variant_t<347> { using type = SgCompoundAssignOp; };
13178
13179// Class: CompoundInitializer
13180template <> struct describe_field_t<SgCompoundInitializer,SgExprListExp*,&SgCompoundInitializer::p_initializers> {
13182 using field_type = SgExprListExp*;
13183 static constexpr size_t position{0};
13184 static constexpr char const * const name{"initializers"};
13185 static constexpr char const * const typestr{"SgExprListExp*"};
13186 static constexpr bool traverse{true};
13187 static constexpr auto mbr_ptr{&SgCompoundInitializer::p_initializers};
13188 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13189 using bind = Desc<SgCompoundInitializer, SgExprListExp* SgCompoundInitializer::*, &SgCompoundInitializer::p_initializers>;
13190};
13191template <> struct describe_field_t<SgCompoundInitializer,SgType*,&SgCompoundInitializer::p_expression_type> {
13193 using field_type = SgType*;
13194 static constexpr size_t position{1};
13195 static constexpr char const * const name{"expression_type"};
13196 static constexpr char const * const typestr{"SgType*"};
13197 static constexpr bool traverse{false};
13198 static constexpr auto mbr_ptr{&SgCompoundInitializer::p_expression_type};
13199 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13200 using bind = Desc<SgCompoundInitializer, SgType* SgCompoundInitializer::*, &SgCompoundInitializer::p_expression_type>;
13201};
13204 using base = SgInitializer;
13205 static constexpr char const * const name{"CompoundInitializer"};
13206 static constexpr unsigned long variant{348};
13207 static constexpr bool concrete{true};
13208 using subclasses_t = mp::List<>;
13210};
13211template <> struct node_from_variant_t<348> { using type = SgCompoundInitializer; };
13212
13213// Class: CompoundLiteralExp
13214template <> struct describe_field_t<SgCompoundLiteralExp,SgVariableSymbol*,&SgCompoundLiteralExp::p_symbol> {
13217 static constexpr size_t position{0};
13218 static constexpr char const * const name{"symbol"};
13219 static constexpr char const * const typestr{"SgVariableSymbol*"};
13220 static constexpr bool traverse{false};
13221 static constexpr auto mbr_ptr{&SgCompoundLiteralExp::p_symbol};
13222 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13223 using bind = Desc<SgCompoundLiteralExp, SgVariableSymbol* SgCompoundLiteralExp::*, &SgCompoundLiteralExp::p_symbol>;
13224};
13226 using node = SgCompoundLiteralExp;
13227 using base = SgExpression;
13228 static constexpr char const * const name{"CompoundLiteralExp"};
13229 static constexpr unsigned long variant{349};
13230 static constexpr bool concrete{true};
13231 using subclasses_t = mp::List<>;
13233};
13234template <> struct node_from_variant_t<349> { using type = SgCompoundLiteralExp; };
13235
13236// Class: ComputedGotoStatement
13237template <> struct describe_field_t<SgComputedGotoStatement,SgExprListExp*,&SgComputedGotoStatement::p_labelList> {
13239 using field_type = SgExprListExp*;
13240 static constexpr size_t position{0};
13241 static constexpr char const * const name{"labelList"};
13242 static constexpr char const * const typestr{"SgExprListExp*"};
13243 static constexpr bool traverse{true};
13244 static constexpr auto mbr_ptr{&SgComputedGotoStatement::p_labelList};
13245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13246 using bind = Desc<SgComputedGotoStatement, SgExprListExp* SgComputedGotoStatement::*, &SgComputedGotoStatement::p_labelList>;
13247};
13248template <> struct describe_field_t<SgComputedGotoStatement,SgExpression*,&SgComputedGotoStatement::p_label_index> {
13250 using field_type = SgExpression*;
13251 static constexpr size_t position{1};
13252 static constexpr char const * const name{"label_index"};
13253 static constexpr char const * const typestr{"SgExpression*"};
13254 static constexpr bool traverse{true};
13255 static constexpr auto mbr_ptr{&SgComputedGotoStatement::p_label_index};
13256 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13257 using bind = Desc<SgComputedGotoStatement, SgExpression* SgComputedGotoStatement::*, &SgComputedGotoStatement::p_label_index>;
13258};
13261 using base = SgStatement;
13262 static constexpr char const * const name{"ComputedGotoStatement"};
13263 static constexpr unsigned long variant{350};
13264 static constexpr bool concrete{true};
13265 using subclasses_t = mp::List<>;
13267};
13268template <> struct node_from_variant_t<350> { using type = SgComputedGotoStatement; };
13269
13270// Class: ConcatenationOp
13272 using node = SgConcatenationOp;
13273 using base = SgBinaryOp;
13274 static constexpr char const * const name{"ConcatenationOp"};
13275 static constexpr unsigned long variant{351};
13276 static constexpr bool concrete{true};
13277 using subclasses_t = mp::List<>;
13278 using fields_t = mp::List<>;
13279};
13280template <> struct node_from_variant_t<351> { using type = SgConcatenationOp; };
13281
13282// Class: ConditionalExp
13284 using parent = SgConditionalExp;
13285 using field_type = SgExpression*;
13286 static constexpr size_t position{0};
13287 static constexpr char const * const name{"conditional_exp"};
13288 static constexpr char const * const typestr{"SgExpression*"};
13289 static constexpr bool traverse{true};
13290 static constexpr auto mbr_ptr{&SgConditionalExp::p_conditional_exp};
13291 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13292 using bind = Desc<SgConditionalExp, SgExpression* SgConditionalExp::*, &SgConditionalExp::p_conditional_exp>;
13293};
13295 using parent = SgConditionalExp;
13296 using field_type = SgExpression*;
13297 static constexpr size_t position{1};
13298 static constexpr char const * const name{"true_exp"};
13299 static constexpr char const * const typestr{"SgExpression*"};
13300 static constexpr bool traverse{true};
13301 static constexpr auto mbr_ptr{&SgConditionalExp::p_true_exp};
13302 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13303 using bind = Desc<SgConditionalExp, SgExpression* SgConditionalExp::*, &SgConditionalExp::p_true_exp>;
13304};
13306 using parent = SgConditionalExp;
13307 using field_type = SgExpression*;
13308 static constexpr size_t position{2};
13309 static constexpr char const * const name{"false_exp"};
13310 static constexpr char const * const typestr{"SgExpression*"};
13311 static constexpr bool traverse{true};
13312 static constexpr auto mbr_ptr{&SgConditionalExp::p_false_exp};
13313 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13314 using bind = Desc<SgConditionalExp, SgExpression* SgConditionalExp::*, &SgConditionalExp::p_false_exp>;
13315};
13317 using parent = SgConditionalExp;
13318 using field_type = SgType*;
13319 static constexpr size_t position{3};
13320 static constexpr char const * const name{"expression_type"};
13321 static constexpr char const * const typestr{"SgType*"};
13322 static constexpr bool traverse{false};
13323 static constexpr auto mbr_ptr{&SgConditionalExp::p_expression_type};
13324 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13325 using bind = Desc<SgConditionalExp, SgType* SgConditionalExp::*, &SgConditionalExp::p_expression_type>;
13326};
13336template <> struct node_from_variant_t<352> { using type = SgConditionalExp; };
13337
13338// Class: ConjugateOp
13339template <> struct describe_node_t<SgConjugateOp> {
13340 using node = SgConjugateOp;
13341 using base = SgUnaryOp;
13342 static constexpr char const * const name{"ConjugateOp"};
13343 static constexpr unsigned long variant{353};
13344 static constexpr bool concrete{true};
13345 using subclasses_t = mp::List<>;
13346 using fields_t = mp::List<>;
13347};
13348template <> struct node_from_variant_t<353> { using type = SgConjugateOp; };
13349
13350// Class: ConstVolatileModifier
13351template <> struct describe_field_t<SgConstVolatileModifier,SgConstVolatileModifier::cv_modifier_enum,&SgConstVolatileModifier::p_modifier> {
13354 static constexpr size_t position{0};
13355 static constexpr char const * const name{"modifier"};
13356 static constexpr char const * const typestr{"SgConstVolatileModifier::cv_modifier_enum"};
13357 static constexpr bool traverse{false};
13358 static constexpr auto mbr_ptr{&SgConstVolatileModifier::p_modifier};
13359 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13360 using bind = Desc<SgConstVolatileModifier, SgConstVolatileModifier::cv_modifier_enum SgConstVolatileModifier::*, &SgConstVolatileModifier::p_modifier>;
13361};
13364 using base = SgModifier;
13365 static constexpr char const * const name{"ConstVolatileModifier"};
13366 static constexpr unsigned long variant{354};
13367 static constexpr bool concrete{true};
13368 using subclasses_t = mp::List<>;
13370};
13371template <> struct node_from_variant_t<354> { using type = SgConstVolatileModifier; };
13372
13373// Class: ConstructorInitializer
13377 static constexpr size_t position{0};
13378 static constexpr char const * const name{"declaration"};
13379 static constexpr char const * const typestr{"SgMemberFunctionDeclaration*"};
13380 static constexpr bool traverse{false};
13381 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_declaration};
13382 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13383 using bind = Desc<SgConstructorInitializer, SgMemberFunctionDeclaration* SgConstructorInitializer::*, &SgConstructorInitializer::p_declaration>;
13384};
13387 using field_type = SgExprListExp*;
13388 static constexpr size_t position{1};
13389 static constexpr char const * const name{"args"};
13390 static constexpr char const * const typestr{"SgExprListExp*"};
13391 static constexpr bool traverse{true};
13392 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_args};
13393 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13394 using bind = Desc<SgConstructorInitializer, SgExprListExp* SgConstructorInitializer::*, &SgConstructorInitializer::p_args>;
13395};
13398 using field_type = SgType*;
13399 static constexpr size_t position{2};
13400 static constexpr char const * const name{"expression_type"};
13401 static constexpr char const * const typestr{"SgType*"};
13402 static constexpr bool traverse{false};
13403 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_expression_type};
13404 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13405 using bind = Desc<SgConstructorInitializer, SgType* SgConstructorInitializer::*, &SgConstructorInitializer::p_expression_type>;
13406};
13409 using field_type = bool;
13410 static constexpr size_t position{3};
13411 static constexpr char const * const name{"need_name"};
13412 static constexpr char const * const typestr{"bool"};
13413 static constexpr bool traverse{false};
13414 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_need_name};
13415 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13416 using bind = Desc<SgConstructorInitializer, bool SgConstructorInitializer::*, &SgConstructorInitializer::p_need_name>;
13417};
13420 using field_type = bool;
13421 static constexpr size_t position{4};
13422 static constexpr char const * const name{"need_qualifier"};
13423 static constexpr char const * const typestr{"bool"};
13424 static constexpr bool traverse{false};
13425 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_need_qualifier};
13426 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13427 using bind = Desc<SgConstructorInitializer, bool SgConstructorInitializer::*, &SgConstructorInitializer::p_need_qualifier>;
13428};
13431 using field_type = bool;
13432 static constexpr size_t position{5};
13433 static constexpr char const * const name{"need_parenthesis_after_name"};
13434 static constexpr char const * const typestr{"bool"};
13435 static constexpr bool traverse{false};
13436 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_need_parenthesis_after_name};
13437 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13438 using bind = Desc<SgConstructorInitializer, bool SgConstructorInitializer::*, &SgConstructorInitializer::p_need_parenthesis_after_name>;
13439};
13442 using field_type = bool;
13443 static constexpr size_t position{6};
13444 static constexpr char const * const name{"associated_class_unknown"};
13445 static constexpr char const * const typestr{"bool"};
13446 static constexpr bool traverse{false};
13447 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_associated_class_unknown};
13448 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13449 using bind = Desc<SgConstructorInitializer, bool SgConstructorInitializer::*, &SgConstructorInitializer::p_associated_class_unknown>;
13450};
13451template <> struct describe_field_t<SgConstructorInitializer,int,&SgConstructorInitializer::p_name_qualification_length> {
13453 using field_type = int;
13454 static constexpr size_t position{7};
13455 static constexpr char const * const name{"name_qualification_length"};
13456 static constexpr char const * const typestr{"int"};
13457 static constexpr bool traverse{false};
13458 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_name_qualification_length};
13459 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13460 using bind = Desc<SgConstructorInitializer, int SgConstructorInitializer::*, &SgConstructorInitializer::p_name_qualification_length>;
13461};
13462template <> struct describe_field_t<SgConstructorInitializer,bool,&SgConstructorInitializer::p_type_elaboration_required> {
13464 using field_type = bool;
13465 static constexpr size_t position{8};
13466 static constexpr char const * const name{"type_elaboration_required"};
13467 static constexpr char const * const typestr{"bool"};
13468 static constexpr bool traverse{false};
13469 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_type_elaboration_required};
13470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13471 using bind = Desc<SgConstructorInitializer, bool SgConstructorInitializer::*, &SgConstructorInitializer::p_type_elaboration_required>;
13472};
13473template <> struct describe_field_t<SgConstructorInitializer,bool,&SgConstructorInitializer::p_global_qualification_required> {
13475 using field_type = bool;
13476 static constexpr size_t position{9};
13477 static constexpr char const * const name{"global_qualification_required"};
13478 static constexpr char const * const typestr{"bool"};
13479 static constexpr bool traverse{false};
13480 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_global_qualification_required};
13481 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13482 using bind = Desc<SgConstructorInitializer, bool SgConstructorInitializer::*, &SgConstructorInitializer::p_global_qualification_required>;
13483};
13484template <> struct describe_field_t<SgConstructorInitializer,bool,&SgConstructorInitializer::p_is_used_in_conditional> {
13486 using field_type = bool;
13487 static constexpr size_t position{10};
13488 static constexpr char const * const name{"is_used_in_conditional"};
13489 static constexpr char const * const typestr{"bool"};
13490 static constexpr bool traverse{false};
13491 static constexpr auto mbr_ptr{&SgConstructorInitializer::p_is_used_in_conditional};
13492 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13493 using bind = Desc<SgConstructorInitializer, bool SgConstructorInitializer::*, &SgConstructorInitializer::p_is_used_in_conditional>;
13494};
13497 using base = SgInitializer;
13498 static constexpr char const * const name{"ConstructorInitializer"};
13499 static constexpr unsigned long variant{355};
13500 static constexpr bool concrete{true};
13501 using subclasses_t = mp::List<>;
13503};
13504template <> struct node_from_variant_t<355> { using type = SgConstructorInitializer; };
13505
13506// Class: ContainsStatement
13508 using node = SgContainsStatement;
13510 static constexpr char const * const name{"ContainsStatement"};
13511 static constexpr unsigned long variant{356};
13512 static constexpr bool concrete{true};
13513 using subclasses_t = mp::List<>;
13514 using fields_t = mp::List<>;
13515};
13516template <> struct node_from_variant_t<356> { using type = SgContainsStatement; };
13517
13518// Class: ContinueStmt
13519template <> struct describe_field_t<SgContinueStmt,std::string,&SgContinueStmt::p_do_string_label> {
13520 using parent = SgContinueStmt;
13521 using field_type = std::string;
13522 static constexpr size_t position{0};
13523 static constexpr char const * const name{"do_string_label"};
13524 static constexpr char const * const typestr{"std::string"};
13525 static constexpr bool traverse{false};
13526 static constexpr auto mbr_ptr{&SgContinueStmt::p_do_string_label};
13527 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13528 using bind = Desc<SgContinueStmt, std::string SgContinueStmt::*, &SgContinueStmt::p_do_string_label>;
13529};
13530template <> struct describe_node_t<SgContinueStmt> {
13531 using node = SgContinueStmt;
13532 using base = SgStatement;
13533 static constexpr char const * const name{"ContinueStmt"};
13534 static constexpr unsigned long variant{357};
13535 static constexpr bool concrete{true};
13536 using subclasses_t = mp::List<>;
13538};
13539template <> struct node_from_variant_t<357> { using type = SgContinueStmt; };
13540
13541// Class: CtorInitializerList
13542template <> struct describe_field_t<SgCtorInitializerList,SgInitializedNamePtrList,&SgCtorInitializerList::p_ctors> {
13544 using field_type = SgInitializedNamePtrList;
13545 static constexpr size_t position{0};
13546 static constexpr char const * const name{"ctors"};
13547 static constexpr char const * const typestr{"SgInitializedNamePtrList"};
13548 static constexpr bool traverse{true};
13549 static constexpr auto mbr_ptr{&SgCtorInitializerList::p_ctors};
13550 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13551 using bind = Desc<SgCtorInitializerList, SgInitializedNamePtrList SgCtorInitializerList::*, &SgCtorInitializerList::p_ctors>;
13552};
13556 static constexpr char const * const name{"CtorInitializerList"};
13557 static constexpr unsigned long variant{358};
13558 static constexpr bool concrete{true};
13559 using subclasses_t = mp::List<>;
13561};
13562template <> struct node_from_variant_t<358> { using type = SgCtorInitializerList; };
13563
13564// Class: DataStatementGroup
13565template <> struct describe_field_t<SgDataStatementGroup,SgDataStatementObjectPtrList,&SgDataStatementGroup::p_object_list> {
13567 using field_type = SgDataStatementObjectPtrList;
13568 static constexpr size_t position{0};
13569 static constexpr char const * const name{"object_list"};
13570 static constexpr char const * const typestr{"SgDataStatementObjectPtrList"};
13571 static constexpr bool traverse{false};
13572 static constexpr auto mbr_ptr{&SgDataStatementGroup::p_object_list};
13573 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13574 using bind = Desc<SgDataStatementGroup, SgDataStatementObjectPtrList SgDataStatementGroup::*, &SgDataStatementGroup::p_object_list>;
13575};
13576template <> struct describe_field_t<SgDataStatementGroup,SgDataStatementValuePtrList,&SgDataStatementGroup::p_value_list> {
13578 using field_type = SgDataStatementValuePtrList;
13579 static constexpr size_t position{1};
13580 static constexpr char const * const name{"value_list"};
13581 static constexpr char const * const typestr{"SgDataStatementValuePtrList"};
13582 static constexpr bool traverse{false};
13583 static constexpr auto mbr_ptr{&SgDataStatementGroup::p_value_list};
13584 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13585 using bind = Desc<SgDataStatementGroup, SgDataStatementValuePtrList SgDataStatementGroup::*, &SgDataStatementGroup::p_value_list>;
13586};
13588 using node = SgDataStatementGroup;
13589 using base = SgSupport;
13590 static constexpr char const * const name{"DataStatementGroup"};
13591 static constexpr unsigned long variant{359};
13592 static constexpr bool concrete{true};
13593 using subclasses_t = mp::List<>;
13595};
13596template <> struct node_from_variant_t<359> { using type = SgDataStatementGroup; };
13597
13598// Class: DataStatementObject
13599template <> struct describe_field_t<SgDataStatementObject,SgExprListExp*,&SgDataStatementObject::p_variableReference_list> {
13601 using field_type = SgExprListExp*;
13602 static constexpr size_t position{0};
13603 static constexpr char const * const name{"variableReference_list"};
13604 static constexpr char const * const typestr{"SgExprListExp*"};
13605 static constexpr bool traverse{false};
13606 static constexpr auto mbr_ptr{&SgDataStatementObject::p_variableReference_list};
13607 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13608 using bind = Desc<SgDataStatementObject, SgExprListExp* SgDataStatementObject::*, &SgDataStatementObject::p_variableReference_list>;
13609};
13612 using base = SgSupport;
13613 static constexpr char const * const name{"DataStatementObject"};
13614 static constexpr unsigned long variant{360};
13615 static constexpr bool concrete{true};
13616 using subclasses_t = mp::List<>;
13618};
13619template <> struct node_from_variant_t<360> { using type = SgDataStatementObject; };
13620
13621// Class: DataStatementValue
13622template <> struct describe_field_t<SgDataStatementValue,SgDataStatementValue::data_statement_value_enum,&SgDataStatementValue::p_data_initialization_format> {
13625 static constexpr size_t position{0};
13626 static constexpr char const * const name{"data_initialization_format"};
13627 static constexpr char const * const typestr{"SgDataStatementValue::data_statement_value_enum"};
13628 static constexpr bool traverse{false};
13629 static constexpr auto mbr_ptr{&SgDataStatementValue::p_data_initialization_format};
13630 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13631 using bind = Desc<SgDataStatementValue, SgDataStatementValue::data_statement_value_enum SgDataStatementValue::*, &SgDataStatementValue::p_data_initialization_format>;
13632};
13633template <> struct describe_field_t<SgDataStatementValue,SgExprListExp*,&SgDataStatementValue::p_initializer_list> {
13635 using field_type = SgExprListExp*;
13636 static constexpr size_t position{1};
13637 static constexpr char const * const name{"initializer_list"};
13638 static constexpr char const * const typestr{"SgExprListExp*"};
13639 static constexpr bool traverse{false};
13640 static constexpr auto mbr_ptr{&SgDataStatementValue::p_initializer_list};
13641 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13642 using bind = Desc<SgDataStatementValue, SgExprListExp* SgDataStatementValue::*, &SgDataStatementValue::p_initializer_list>;
13643};
13644template <> struct describe_field_t<SgDataStatementValue,SgExpression*,&SgDataStatementValue::p_repeat_expression> {
13646 using field_type = SgExpression*;
13647 static constexpr size_t position{2};
13648 static constexpr char const * const name{"repeat_expression"};
13649 static constexpr char const * const typestr{"SgExpression*"};
13650 static constexpr bool traverse{false};
13651 static constexpr auto mbr_ptr{&SgDataStatementValue::p_repeat_expression};
13652 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13653 using bind = Desc<SgDataStatementValue, SgExpression* SgDataStatementValue::*, &SgDataStatementValue::p_repeat_expression>;
13654};
13655template <> struct describe_field_t<SgDataStatementValue,SgExpression*,&SgDataStatementValue::p_constant_expression> {
13657 using field_type = SgExpression*;
13658 static constexpr size_t position{3};
13659 static constexpr char const * const name{"constant_expression"};
13660 static constexpr char const * const typestr{"SgExpression*"};
13661 static constexpr bool traverse{false};
13662 static constexpr auto mbr_ptr{&SgDataStatementValue::p_constant_expression};
13663 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13664 using bind = Desc<SgDataStatementValue, SgExpression* SgDataStatementValue::*, &SgDataStatementValue::p_constant_expression>;
13665};
13675template <> struct node_from_variant_t<361> { using type = SgDataStatementValue; };
13676
13677// Class: DeadIfDirectiveStatement
13681 static constexpr char const * const name{"DeadIfDirectiveStatement"};
13682 static constexpr unsigned long variant{362};
13683 static constexpr bool concrete{true};
13684 using subclasses_t = mp::List<>;
13685 using fields_t = mp::List<>;
13686};
13687template <> struct node_from_variant_t<362> { using type = SgDeadIfDirectiveStatement; };
13688
13689// Class: DeallocateStatement
13690template <> struct describe_field_t<SgDeallocateStatement,SgExprListExp*,&SgDeallocateStatement::p_expr_list> {
13692 using field_type = SgExprListExp*;
13693 static constexpr size_t position{0};
13694 static constexpr char const * const name{"expr_list"};
13695 static constexpr char const * const typestr{"SgExprListExp*"};
13696 static constexpr bool traverse{true};
13697 static constexpr auto mbr_ptr{&SgDeallocateStatement::p_expr_list};
13698 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13699 using bind = Desc<SgDeallocateStatement, SgExprListExp* SgDeallocateStatement::*, &SgDeallocateStatement::p_expr_list>;
13700};
13701template <> struct describe_field_t<SgDeallocateStatement,SgExpression*,&SgDeallocateStatement::p_stat_expression> {
13703 using field_type = SgExpression*;
13704 static constexpr size_t position{1};
13705 static constexpr char const * const name{"stat_expression"};
13706 static constexpr char const * const typestr{"SgExpression*"};
13707 static constexpr bool traverse{true};
13708 static constexpr auto mbr_ptr{&SgDeallocateStatement::p_stat_expression};
13709 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13710 using bind = Desc<SgDeallocateStatement, SgExpression* SgDeallocateStatement::*, &SgDeallocateStatement::p_stat_expression>;
13711};
13712template <> struct describe_field_t<SgDeallocateStatement,SgExpression*,&SgDeallocateStatement::p_errmsg_expression> {
13714 using field_type = SgExpression*;
13715 static constexpr size_t position{2};
13716 static constexpr char const * const name{"errmsg_expression"};
13717 static constexpr char const * const typestr{"SgExpression*"};
13718 static constexpr bool traverse{true};
13719 static constexpr auto mbr_ptr{&SgDeallocateStatement::p_errmsg_expression};
13720 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13721 using bind = Desc<SgDeallocateStatement, SgExpression* SgDeallocateStatement::*, &SgDeallocateStatement::p_errmsg_expression>;
13722};
13725 using base = SgStatement;
13726 static constexpr char const * const name{"DeallocateStatement"};
13727 static constexpr unsigned long variant{363};
13728 static constexpr bool concrete{true};
13729 using subclasses_t = mp::List<>;
13731};
13732template <> struct node_from_variant_t<363> { using type = SgDeallocateStatement; };
13733
13734// Class: DeclarationModifier
13737 using field_type = SgBitVector;
13738 static constexpr size_t position{0};
13739 static constexpr char const * const name{"modifierVector"};
13740 static constexpr char const * const typestr{"SgBitVector"};
13741 static constexpr bool traverse{false};
13742 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_modifierVector};
13743 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13744 using bind = Desc<SgDeclarationModifier, SgBitVector SgDeclarationModifier::*, &SgDeclarationModifier::p_modifierVector>;
13745};
13748 using field_type = SgTypeModifier;
13749 static constexpr size_t position{1};
13750 static constexpr char const * const name{"typeModifier"};
13751 static constexpr char const * const typestr{"SgTypeModifier"};
13752 static constexpr bool traverse{false};
13753 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_typeModifier};
13754 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13755 using bind = Desc<SgDeclarationModifier, SgTypeModifier SgDeclarationModifier::*, &SgDeclarationModifier::p_typeModifier>;
13756};
13760 static constexpr size_t position{2};
13761 static constexpr char const * const name{"accessModifier"};
13762 static constexpr char const * const typestr{"SgAccessModifier"};
13763 static constexpr bool traverse{false};
13764 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_accessModifier};
13765 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13766 using bind = Desc<SgDeclarationModifier, SgAccessModifier SgDeclarationModifier::*, &SgDeclarationModifier::p_accessModifier>;
13767};
13771 static constexpr size_t position{3};
13772 static constexpr char const * const name{"storageModifier"};
13773 static constexpr char const * const typestr{"SgStorageModifier"};
13774 static constexpr bool traverse{false};
13775 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_storageModifier};
13776 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13777 using bind = Desc<SgDeclarationModifier, SgStorageModifier SgDeclarationModifier::*, &SgDeclarationModifier::p_storageModifier>;
13778};
13779template <> struct describe_field_t<SgDeclarationModifier,std::string,&SgDeclarationModifier::p_gnu_attribute_section_name> {
13781 using field_type = std::string;
13782 static constexpr size_t position{4};
13783 static constexpr char const * const name{"gnu_attribute_section_name"};
13784 static constexpr char const * const typestr{"std::string"};
13785 static constexpr bool traverse{false};
13786 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_gnu_attribute_section_name};
13787 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13788 using bind = Desc<SgDeclarationModifier, std::string SgDeclarationModifier::*, &SgDeclarationModifier::p_gnu_attribute_section_name>;
13789};
13790template <> struct describe_field_t<SgDeclarationModifier,SgDeclarationModifier::gnu_declaration_visability_enum,&SgDeclarationModifier::p_gnu_attribute_visability> {
13793 static constexpr size_t position{5};
13794 static constexpr char const * const name{"gnu_attribute_visability"};
13795 static constexpr char const * const typestr{"SgDeclarationModifier::gnu_declaration_visability_enum"};
13796 static constexpr bool traverse{false};
13797 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_gnu_attribute_visability};
13798 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13799 using bind = Desc<SgDeclarationModifier, SgDeclarationModifier::gnu_declaration_visability_enum SgDeclarationModifier::*, &SgDeclarationModifier::p_gnu_attribute_visability>;
13800};
13801template <> struct describe_field_t<SgDeclarationModifier,std::string,&SgDeclarationModifier::p_microsoft_uuid_string> {
13803 using field_type = std::string;
13804 static constexpr size_t position{6};
13805 static constexpr char const * const name{"microsoft_uuid_string"};
13806 static constexpr char const * const typestr{"std::string"};
13807 static constexpr bool traverse{false};
13808 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_microsoft_uuid_string};
13809 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13810 using bind = Desc<SgDeclarationModifier, std::string SgDeclarationModifier::*, &SgDeclarationModifier::p_microsoft_uuid_string>;
13811};
13812template <> struct describe_field_t<SgDeclarationModifier,std::string,&SgDeclarationModifier::p_microsoft_property_get_function_name> {
13814 using field_type = std::string;
13815 static constexpr size_t position{7};
13816 static constexpr char const * const name{"microsoft_property_get_function_name"};
13817 static constexpr char const * const typestr{"std::string"};
13818 static constexpr bool traverse{false};
13819 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_microsoft_property_get_function_name};
13820 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13821 using bind = Desc<SgDeclarationModifier, std::string SgDeclarationModifier::*, &SgDeclarationModifier::p_microsoft_property_get_function_name>;
13822};
13823template <> struct describe_field_t<SgDeclarationModifier,std::string,&SgDeclarationModifier::p_microsoft_property_put_function_name> {
13825 using field_type = std::string;
13826 static constexpr size_t position{8};
13827 static constexpr char const * const name{"microsoft_property_put_function_name"};
13828 static constexpr char const * const typestr{"std::string"};
13829 static constexpr bool traverse{false};
13830 static constexpr auto mbr_ptr{&SgDeclarationModifier::p_microsoft_property_put_function_name};
13831 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13832 using bind = Desc<SgDeclarationModifier, std::string SgDeclarationModifier::*, &SgDeclarationModifier::p_microsoft_property_put_function_name>;
13833};
13843template <> struct node_from_variant_t<364> { using type = SgDeclarationModifier; };
13844
13845// Class: DeclarationScope
13847 using node = SgDeclarationScope;
13848 using base = SgScopeStatement;
13849 static constexpr char const * const name{"DeclarationScope"};
13850 static constexpr unsigned long variant{365};
13851 static constexpr bool concrete{true};
13852 using subclasses_t = mp::List<>;
13853 using fields_t = mp::List<>;
13854};
13855template <> struct node_from_variant_t<365> { using type = SgDeclarationScope; };
13856
13857// Class: DeclarationStatement
13860 using field_type = unsigned int;
13861 static constexpr size_t position{0};
13862 static constexpr char const * const name{"decl_attributes"};
13863 static constexpr char const * const typestr{"unsigned int"};
13864 static constexpr bool traverse{false};
13865 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_decl_attributes};
13866 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13867 using bind = Desc<SgDeclarationStatement, unsigned int SgDeclarationStatement::*, &SgDeclarationStatement::p_decl_attributes>;
13868};
13871 using field_type = std::string;
13872 static constexpr size_t position{1};
13873 static constexpr char const * const name{"linkage"};
13874 static constexpr char const * const typestr{"std::string"};
13875 static constexpr bool traverse{false};
13876 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_linkage};
13877 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13878 using bind = Desc<SgDeclarationStatement, std::string SgDeclarationStatement::*, &SgDeclarationStatement::p_linkage>;
13879};
13883 static constexpr size_t position{2};
13884 static constexpr char const * const name{"declarationModifier"};
13885 static constexpr char const * const typestr{"SgDeclarationModifier"};
13886 static constexpr bool traverse{false};
13887 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_declarationModifier};
13888 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13889 using bind = Desc<SgDeclarationStatement, SgDeclarationModifier SgDeclarationStatement::*, &SgDeclarationStatement::p_declarationModifier>;
13890};
13893 using field_type = bool;
13894 static constexpr size_t position{3};
13895 static constexpr char const * const name{"nameOnly"};
13896 static constexpr char const * const typestr{"bool"};
13897 static constexpr bool traverse{false};
13898 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_nameOnly};
13899 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13900 using bind = Desc<SgDeclarationStatement, bool SgDeclarationStatement::*, &SgDeclarationStatement::p_nameOnly>;
13901};
13904 using field_type = bool;
13905 static constexpr size_t position{4};
13906 static constexpr char const * const name{"forward"};
13907 static constexpr char const * const typestr{"bool"};
13908 static constexpr bool traverse{false};
13909 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_forward};
13910 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13911 using bind = Desc<SgDeclarationStatement, bool SgDeclarationStatement::*, &SgDeclarationStatement::p_forward>;
13912};
13915 using field_type = bool;
13916 static constexpr size_t position{5};
13917 static constexpr char const * const name{"externBrace"};
13918 static constexpr char const * const typestr{"bool"};
13919 static constexpr bool traverse{false};
13920 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_externBrace};
13921 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13922 using bind = Desc<SgDeclarationStatement, bool SgDeclarationStatement::*, &SgDeclarationStatement::p_externBrace>;
13923};
13926 using field_type = bool;
13927 static constexpr size_t position{6};
13928 static constexpr char const * const name{"skipElaborateType"};
13929 static constexpr char const * const typestr{"bool"};
13930 static constexpr bool traverse{false};
13931 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_skipElaborateType};
13932 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13933 using bind = Desc<SgDeclarationStatement, bool SgDeclarationStatement::*, &SgDeclarationStatement::p_skipElaborateType>;
13934};
13938 static constexpr size_t position{7};
13939 static constexpr char const * const name{"definingDeclaration"};
13940 static constexpr char const * const typestr{"SgDeclarationStatement*"};
13941 static constexpr bool traverse{false};
13942 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_definingDeclaration};
13943 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13944 using bind = Desc<SgDeclarationStatement, SgDeclarationStatement* SgDeclarationStatement::*, &SgDeclarationStatement::p_definingDeclaration>;
13945};
13949 static constexpr size_t position{8};
13950 static constexpr char const * const name{"firstNondefiningDeclaration"};
13951 static constexpr char const * const typestr{"SgDeclarationStatement*"};
13952 static constexpr bool traverse{false};
13953 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_firstNondefiningDeclaration};
13954 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13955 using bind = Desc<SgDeclarationStatement, SgDeclarationStatement* SgDeclarationStatement::*, &SgDeclarationStatement::p_firstNondefiningDeclaration>;
13956};
13957template <> struct describe_field_t<SgDeclarationStatement,SgQualifiedNamePtrList,&SgDeclarationStatement::p_qualifiedNameList> {
13959 using field_type = SgQualifiedNamePtrList;
13960 static constexpr size_t position{9};
13961 static constexpr char const * const name{"qualifiedNameList"};
13962 static constexpr char const * const typestr{"SgQualifiedNamePtrList"};
13963 static constexpr bool traverse{false};
13964 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_qualifiedNameList};
13965 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13966 using bind = Desc<SgDeclarationStatement, SgQualifiedNamePtrList SgDeclarationStatement::*, &SgDeclarationStatement::p_qualifiedNameList>;
13967};
13968template <> struct describe_field_t<SgDeclarationStatement,std::string,&SgDeclarationStatement::p_binding_label> {
13970 using field_type = std::string;
13971 static constexpr size_t position{10};
13972 static constexpr char const * const name{"binding_label"};
13973 static constexpr char const * const typestr{"std::string"};
13974 static constexpr bool traverse{false};
13975 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_binding_label};
13976 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13977 using bind = Desc<SgDeclarationStatement, std::string SgDeclarationStatement::*, &SgDeclarationStatement::p_binding_label>;
13978};
13979template <> struct describe_field_t<SgDeclarationStatement,SgDeclarationScope*,&SgDeclarationStatement::p_declarationScope> {
13982 static constexpr size_t position{11};
13983 static constexpr char const * const name{"declarationScope"};
13984 static constexpr char const * const typestr{"SgDeclarationScope*"};
13985 static constexpr bool traverse{false};
13986 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_declarationScope};
13987 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13988 using bind = Desc<SgDeclarationStatement, SgDeclarationScope* SgDeclarationStatement::*, &SgDeclarationStatement::p_declarationScope>;
13989};
13990template <> struct describe_field_t<SgDeclarationStatement,bool,&SgDeclarationStatement::p_unparse_template_ast> {
13992 using field_type = bool;
13993 static constexpr size_t position{12};
13994 static constexpr char const * const name{"unparse_template_ast"};
13995 static constexpr char const * const typestr{"bool"};
13996 static constexpr bool traverse{false};
13997 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_unparse_template_ast};
13998 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
13999 using bind = Desc<SgDeclarationStatement, bool SgDeclarationStatement::*, &SgDeclarationStatement::p_unparse_template_ast>;
14000};
14001template <> struct describe_field_t<SgDeclarationStatement,SgExprListExp*,&SgDeclarationStatement::p_adaAspects> {
14003 using field_type = SgExprListExp*;
14004 static constexpr size_t position{13};
14005 static constexpr char const * const name{"adaAspects"};
14006 static constexpr char const * const typestr{"SgExprListExp*"};
14007 static constexpr bool traverse{false};
14008 static constexpr auto mbr_ptr{&SgDeclarationStatement::p_adaAspects};
14009 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14010 using bind = Desc<SgDeclarationStatement, SgExprListExp* SgDeclarationStatement::*, &SgDeclarationStatement::p_adaAspects>;
14011};
14014 using base = SgStatement;
14015 static constexpr char const * const name{"DeclarationStatement"};
14016 static constexpr unsigned long variant{366};
14017 static constexpr bool concrete{false};
14018 using subclasses_t = mp::List<SgFunctionParameterList, SgVariableDeclaration, SgVariableDefinition, SgClinkageDeclarationStatement, SgEnumDeclaration, SgAsmStmt, SgAttributeSpecificationStatement, SgFormatStatement, SgTemplateDeclaration, SgTemplateInstantiationDirectiveStatement, SgUseStatement, SgParameterStatement, SgNamespaceDeclarationStatement, SgEquivalenceStatement, SgInterfaceStatement, SgNamespaceAliasDeclarationStatement, SgCommonBlock, SgTypedefDeclaration, SgStatementFunctionStatement, SgCtorInitializerList, SgPragmaDeclaration, SgUsingDirectiveStatement, SgClassDeclaration, SgImplicitStatement, SgUsingDeclarationStatement, SgNamelistStatement, SgImportStatement, SgFunctionDeclaration, SgContainsStatement, SgC_PreprocessorDirectiveStatement, SgOmpThreadprivateStatement, SgFortranIncludeLine, SgJavaImportStatement, SgJavaPackageStatement, SgStmtDeclarationStatement, SgStaticAssertionDeclaration, SgOmpDeclareSimdStatement, SgMicrosoftAttributeDeclaration, SgJovialCompoolStatement, SgJovialDirectiveStatement, SgJovialDefineDeclaration, SgJovialLabelDeclaration, SgJovialOverlayDeclaration, SgNonrealDecl, SgEmptyDeclaration, SgAdaPackageBodyDecl, SgAdaPackageSpecDecl, SgAdaRenamingDecl, SgAdaTaskSpecDecl, SgAdaTaskBodyDecl, SgAdaTaskTypeDecl, SgAdaProtectedSpecDecl, SgAdaProtectedBodyDecl, SgAdaProtectedTypeDecl, SgAdaRepresentationClause, SgAdaComponentClause, SgAdaAttributeClause, SgAdaEnumRepresentationClause, SgAdaGenericDecl, SgAdaFormalTypeDecl, SgAdaDiscriminatedTypeDecl, SgAdaGenericInstanceDecl, SgAdaFormalPackageDecl, SgAdaParameterList, SgAdaVariantDecl>;
14020};
14021template <> struct node_from_variant_t<366> { using type = SgDeclarationStatement; };
14022
14023// Class: DeclType
14024template <> struct describe_field_t<SgDeclType,SgExpression*,&SgDeclType::p_base_expression> {
14025 using parent = SgDeclType;
14026 using field_type = SgExpression*;
14027 static constexpr size_t position{0};
14028 static constexpr char const * const name{"base_expression"};
14029 static constexpr char const * const typestr{"SgExpression*"};
14030 static constexpr bool traverse{false};
14031 static constexpr auto mbr_ptr{&SgDeclType::p_base_expression};
14032 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14033 using bind = Desc<SgDeclType, SgExpression* SgDeclType::*, &SgDeclType::p_base_expression>;
14034};
14035template <> struct describe_field_t<SgDeclType,SgType*,&SgDeclType::p_base_type> {
14036 using parent = SgDeclType;
14037 using field_type = SgType*;
14038 static constexpr size_t position{1};
14039 static constexpr char const * const name{"base_type"};
14040 static constexpr char const * const typestr{"SgType*"};
14041 static constexpr bool traverse{false};
14042 static constexpr auto mbr_ptr{&SgDeclType::p_base_type};
14043 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14044 using bind = Desc<SgDeclType, SgType* SgDeclType::*, &SgDeclType::p_base_type>;
14045};
14046template <> struct describe_node_t<SgDeclType> {
14047 using node = SgDeclType;
14048 using base = SgType;
14049 static constexpr char const * const name{"DeclType"};
14050 static constexpr unsigned long variant{367};
14051 static constexpr bool concrete{true};
14052 using subclasses_t = mp::List<>;
14054};
14055template <> struct node_from_variant_t<367> { using type = SgDeclType; };
14056
14057// Class: DefaultOptionStmt
14060 using field_type = SgStatement*;
14061 static constexpr size_t position{0};
14062 static constexpr char const * const name{"body"};
14063 static constexpr char const * const typestr{"SgStatement*"};
14064 static constexpr bool traverse{true};
14065 static constexpr auto mbr_ptr{&SgDefaultOptionStmt::p_body};
14066 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14067 using bind = Desc<SgDefaultOptionStmt, SgStatement* SgDefaultOptionStmt::*, &SgDefaultOptionStmt::p_body>;
14068};
14069template <> struct describe_field_t<SgDefaultOptionStmt,std::string,&SgDefaultOptionStmt::p_default_construct_name> {
14071 using field_type = std::string;
14072 static constexpr size_t position{1};
14073 static constexpr char const * const name{"default_construct_name"};
14074 static constexpr char const * const typestr{"std::string"};
14075 static constexpr bool traverse{false};
14076 static constexpr auto mbr_ptr{&SgDefaultOptionStmt::p_default_construct_name};
14077 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14078 using bind = Desc<SgDefaultOptionStmt, std::string SgDefaultOptionStmt::*, &SgDefaultOptionStmt::p_default_construct_name>;
14079};
14080template <> struct describe_field_t<SgDefaultOptionStmt,bool,&SgDefaultOptionStmt::p_has_fall_through> {
14082 using field_type = bool;
14083 static constexpr size_t position{2};
14084 static constexpr char const * const name{"has_fall_through"};
14085 static constexpr char const * const typestr{"bool"};
14086 static constexpr bool traverse{false};
14087 static constexpr auto mbr_ptr{&SgDefaultOptionStmt::p_has_fall_through};
14088 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14089 using bind = Desc<SgDefaultOptionStmt, bool SgDefaultOptionStmt::*, &SgDefaultOptionStmt::p_has_fall_through>;
14090};
14092 using node = SgDefaultOptionStmt;
14093 using base = SgStatement;
14094 static constexpr char const * const name{"DefaultOptionStmt"};
14095 static constexpr unsigned long variant{368};
14096 static constexpr bool concrete{true};
14097 using subclasses_t = mp::List<>;
14099};
14100template <> struct node_from_variant_t<368> { using type = SgDefaultOptionStmt; };
14101
14102// Class: DefaultSymbol
14103template <> struct describe_field_t<SgDefaultSymbol,SgType*,&SgDefaultSymbol::p_type> {
14104 using parent = SgDefaultSymbol;
14105 using field_type = SgType*;
14106 static constexpr size_t position{0};
14107 static constexpr char const * const name{"type"};
14108 static constexpr char const * const typestr{"SgType*"};
14109 static constexpr bool traverse{false};
14110 static constexpr auto mbr_ptr{&SgDefaultSymbol::p_type};
14111 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14112 using bind = Desc<SgDefaultSymbol, SgType* SgDefaultSymbol::*, &SgDefaultSymbol::p_type>;
14113};
14115 using node = SgDefaultSymbol;
14116 using base = SgSymbol;
14117 static constexpr char const * const name{"DefaultSymbol"};
14118 static constexpr unsigned long variant{369};
14119 static constexpr bool concrete{true};
14120 using subclasses_t = mp::List<>;
14122};
14123template <> struct node_from_variant_t<369> { using type = SgDefaultSymbol; };
14124
14125// Class: DefineDirectiveStatement
14129 static constexpr char const * const name{"DefineDirectiveStatement"};
14130 static constexpr unsigned long variant{370};
14131 static constexpr bool concrete{true};
14132 using subclasses_t = mp::List<>;
14133 using fields_t = mp::List<>;
14134};
14135template <> struct node_from_variant_t<370> { using type = SgDefineDirectiveStatement; };
14136
14137// Class: DeleteExp
14139 using parent = SgDeleteExp;
14140 using field_type = SgExpression*;
14141 static constexpr size_t position{0};
14142 static constexpr char const * const name{"variable"};
14143 static constexpr char const * const typestr{"SgExpression*"};
14144 static constexpr bool traverse{true};
14145 static constexpr auto mbr_ptr{&SgDeleteExp::p_variable};
14146 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14147 using bind = Desc<SgDeleteExp, SgExpression* SgDeleteExp::*, &SgDeleteExp::p_variable>;
14148};
14150 using parent = SgDeleteExp;
14151 using field_type = short;
14152 static constexpr size_t position{1};
14153 static constexpr char const * const name{"is_array"};
14154 static constexpr char const * const typestr{"short"};
14155 static constexpr bool traverse{false};
14156 static constexpr auto mbr_ptr{&SgDeleteExp::p_is_array};
14157 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14158 using bind = Desc<SgDeleteExp, short SgDeleteExp::*, &SgDeleteExp::p_is_array>;
14159};
14161 using parent = SgDeleteExp;
14162 using field_type = short;
14163 static constexpr size_t position{2};
14164 static constexpr char const * const name{"need_global_specifier"};
14165 static constexpr char const * const typestr{"short"};
14166 static constexpr bool traverse{false};
14167 static constexpr auto mbr_ptr{&SgDeleteExp::p_need_global_specifier};
14168 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14169 using bind = Desc<SgDeleteExp, short SgDeleteExp::*, &SgDeleteExp::p_need_global_specifier>;
14170};
14171template <> struct describe_field_t<SgDeleteExp,SgFunctionDeclaration*,&SgDeleteExp::p_deleteOperatorDeclaration> {
14172 using parent = SgDeleteExp;
14174 static constexpr size_t position{3};
14175 static constexpr char const * const name{"deleteOperatorDeclaration"};
14176 static constexpr char const * const typestr{"SgFunctionDeclaration*"};
14177 static constexpr bool traverse{false};
14178 static constexpr auto mbr_ptr{&SgDeleteExp::p_deleteOperatorDeclaration};
14179 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14180 using bind = Desc<SgDeleteExp, SgFunctionDeclaration* SgDeleteExp::*, &SgDeleteExp::p_deleteOperatorDeclaration>;
14181};
14182template <> struct describe_node_t<SgDeleteExp> {
14183 using node = SgDeleteExp;
14184 using base = SgExpression;
14185 static constexpr char const * const name{"DeleteExp"};
14186 static constexpr unsigned long variant{371};
14187 static constexpr bool concrete{true};
14188 using subclasses_t = mp::List<>;
14190};
14191template <> struct node_from_variant_t<371> { using type = SgDeleteExp; };
14192
14193// Class: DerivedTypeStatement
14194template <> struct describe_field_t<SgDerivedTypeStatement,SgLabelRefExp*,&SgDerivedTypeStatement::p_end_numeric_label> {
14196 using field_type = SgLabelRefExp*;
14197 static constexpr size_t position{0};
14198 static constexpr char const * const name{"end_numeric_label"};
14199 static constexpr char const * const typestr{"SgLabelRefExp*"};
14200 static constexpr bool traverse{false};
14201 static constexpr auto mbr_ptr{&SgDerivedTypeStatement::p_end_numeric_label};
14202 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14203 using bind = Desc<SgDerivedTypeStatement, SgLabelRefExp* SgDerivedTypeStatement::*, &SgDerivedTypeStatement::p_end_numeric_label>;
14204};
14207 using base = SgClassDeclaration;
14208 static constexpr char const * const name{"DerivedTypeStatement"};
14209 static constexpr unsigned long variant{372};
14210 static constexpr bool concrete{true};
14211 using subclasses_t = mp::List<>;
14213};
14214template <> struct node_from_variant_t<372> { using type = SgDerivedTypeStatement; };
14215
14216// Class: DesignatedInitializer
14217template <> struct describe_field_t<SgDesignatedInitializer,SgExprListExp*,&SgDesignatedInitializer::p_designatorList> {
14219 using field_type = SgExprListExp*;
14220 static constexpr size_t position{0};
14221 static constexpr char const * const name{"designatorList"};
14222 static constexpr char const * const typestr{"SgExprListExp*"};
14223 static constexpr bool traverse{true};
14224 static constexpr auto mbr_ptr{&SgDesignatedInitializer::p_designatorList};
14225 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14226 using bind = Desc<SgDesignatedInitializer, SgExprListExp* SgDesignatedInitializer::*, &SgDesignatedInitializer::p_designatorList>;
14227};
14228template <> struct describe_field_t<SgDesignatedInitializer,SgInitializer*,&SgDesignatedInitializer::p_memberInit> {
14230 using field_type = SgInitializer*;
14231 static constexpr size_t position{1};
14232 static constexpr char const * const name{"memberInit"};
14233 static constexpr char const * const typestr{"SgInitializer*"};
14234 static constexpr bool traverse{true};
14235 static constexpr auto mbr_ptr{&SgDesignatedInitializer::p_memberInit};
14236 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14237 using bind = Desc<SgDesignatedInitializer, SgInitializer* SgDesignatedInitializer::*, &SgDesignatedInitializer::p_memberInit>;
14238};
14241 using base = SgInitializer;
14242 static constexpr char const * const name{"DesignatedInitializer"};
14243 static constexpr unsigned long variant{373};
14244 static constexpr bool concrete{true};
14245 using subclasses_t = mp::List<>;
14247};
14248template <> struct node_from_variant_t<373> { using type = SgDesignatedInitializer; };
14249
14250// Class: DictionaryComprehension
14251template <> struct describe_field_t<SgDictionaryComprehension,SgKeyDatumPair*,&SgDictionaryComprehension::p_element> {
14253 using field_type = SgKeyDatumPair*;
14254 static constexpr size_t position{0};
14255 static constexpr char const * const name{"element"};
14256 static constexpr char const * const typestr{"SgKeyDatumPair*"};
14257 static constexpr bool traverse{true};
14258 static constexpr auto mbr_ptr{&SgDictionaryComprehension::p_element};
14259 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14260 using bind = Desc<SgDictionaryComprehension, SgKeyDatumPair* SgDictionaryComprehension::*, &SgDictionaryComprehension::p_element>;
14261};
14262template <> struct describe_field_t<SgDictionaryComprehension,SgExprListExp*,&SgDictionaryComprehension::p_generators> {
14264 using field_type = SgExprListExp*;
14265 static constexpr size_t position{1};
14266 static constexpr char const * const name{"generators"};
14267 static constexpr char const * const typestr{"SgExprListExp*"};
14268 static constexpr bool traverse{true};
14269 static constexpr auto mbr_ptr{&SgDictionaryComprehension::p_generators};
14270 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14271 using bind = Desc<SgDictionaryComprehension, SgExprListExp* SgDictionaryComprehension::*, &SgDictionaryComprehension::p_generators>;
14272};
14275 using base = SgExpression;
14276 static constexpr char const * const name{"DictionaryComprehension"};
14277 static constexpr unsigned long variant{374};
14278 static constexpr bool concrete{true};
14279 using subclasses_t = mp::List<>;
14281};
14282template <> struct node_from_variant_t<374> { using type = SgDictionaryComprehension; };
14283
14284// Class: DictionaryExp
14285template <> struct describe_field_t<SgDictionaryExp,SgKeyDatumPairPtrList,&SgDictionaryExp::p_key_datum_pairs> {
14286 using parent = SgDictionaryExp;
14287 using field_type = SgKeyDatumPairPtrList;
14288 static constexpr size_t position{0};
14289 static constexpr char const * const name{"key_datum_pairs"};
14290 static constexpr char const * const typestr{"SgKeyDatumPairPtrList"};
14291 static constexpr bool traverse{true};
14292 static constexpr auto mbr_ptr{&SgDictionaryExp::p_key_datum_pairs};
14293 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14294 using bind = Desc<SgDictionaryExp, SgKeyDatumPairPtrList SgDictionaryExp::*, &SgDictionaryExp::p_key_datum_pairs>;
14295};
14297 using node = SgDictionaryExp;
14298 using base = SgExpression;
14299 static constexpr char const * const name{"DictionaryExp"};
14300 static constexpr unsigned long variant{375};
14301 static constexpr bool concrete{true};
14302 using subclasses_t = mp::List<>;
14304};
14305template <> struct node_from_variant_t<375> { using type = SgDictionaryExp; };
14306
14307// Class: DimensionObject
14308template <> struct describe_field_t<SgDimensionObject,SgInitializedName*,&SgDimensionObject::p_array> {
14309 using parent = SgDimensionObject;
14311 static constexpr size_t position{0};
14312 static constexpr char const * const name{"array"};
14313 static constexpr char const * const typestr{"SgInitializedName*"};
14314 static constexpr bool traverse{false};
14315 static constexpr auto mbr_ptr{&SgDimensionObject::p_array};
14316 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14317 using bind = Desc<SgDimensionObject, SgInitializedName* SgDimensionObject::*, &SgDimensionObject::p_array>;
14318};
14319template <> struct describe_field_t<SgDimensionObject,SgExprListExp*,&SgDimensionObject::p_shape> {
14320 using parent = SgDimensionObject;
14321 using field_type = SgExprListExp*;
14322 static constexpr size_t position{1};
14323 static constexpr char const * const name{"shape"};
14324 static constexpr char const * const typestr{"SgExprListExp*"};
14325 static constexpr bool traverse{false};
14326 static constexpr auto mbr_ptr{&SgDimensionObject::p_shape};
14327 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14328 using bind = Desc<SgDimensionObject, SgExprListExp* SgDimensionObject::*, &SgDimensionObject::p_shape>;
14329};
14331 using node = SgDimensionObject;
14332 using base = SgSupport;
14333 static constexpr char const * const name{"DimensionObject"};
14334 static constexpr unsigned long variant{376};
14335 static constexpr bool concrete{true};
14336 using subclasses_t = mp::List<>;
14338};
14339template <> struct node_from_variant_t<376> { using type = SgDimensionObject; };
14340
14341// Class: DirectedGraphEdge
14343 using node = SgDirectedGraphEdge;
14344 using base = SgGraphEdge;
14345 static constexpr char const * const name{"DirectedGraphEdge"};
14346 static constexpr unsigned long variant{378};
14347 static constexpr bool concrete{true};
14348 using subclasses_t = mp::List<>;
14349 using fields_t = mp::List<>;
14350};
14351template <> struct node_from_variant_t<378> { using type = SgDirectedGraphEdge; };
14352
14353// Class: Directory
14354template <> struct describe_field_t<SgDirectory,std::string,&SgDirectory::p_name> {
14355 using parent = SgDirectory;
14356 using field_type = std::string;
14357 static constexpr size_t position{0};
14358 static constexpr char const * const name{"name"};
14359 static constexpr char const * const typestr{"std::string"};
14360 static constexpr bool traverse{false};
14361 static constexpr auto mbr_ptr{&SgDirectory::p_name};
14362 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14363 using bind = Desc<SgDirectory, std::string SgDirectory::*, &SgDirectory::p_name>;
14364};
14365template <> struct describe_field_t<SgDirectory,SgFileList*,&SgDirectory::p_fileList> {
14366 using parent = SgDirectory;
14367 using field_type = SgFileList*;
14368 static constexpr size_t position{1};
14369 static constexpr char const * const name{"fileList"};
14370 static constexpr char const * const typestr{"SgFileList*"};
14371 static constexpr bool traverse{true};
14372 static constexpr auto mbr_ptr{&SgDirectory::p_fileList};
14373 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14374 using bind = Desc<SgDirectory, SgFileList* SgDirectory::*, &SgDirectory::p_fileList>;
14375};
14376template <> struct describe_field_t<SgDirectory,SgDirectoryList*,&SgDirectory::p_directoryList> {
14377 using parent = SgDirectory;
14378 using field_type = SgDirectoryList*;
14379 static constexpr size_t position{2};
14380 static constexpr char const * const name{"directoryList"};
14381 static constexpr char const * const typestr{"SgDirectoryList*"};
14382 static constexpr bool traverse{true};
14383 static constexpr auto mbr_ptr{&SgDirectory::p_directoryList};
14384 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14385 using bind = Desc<SgDirectory, SgDirectoryList* SgDirectory::*, &SgDirectory::p_directoryList>;
14386};
14387template <> struct describe_field_t<SgDirectory,AstAttributeMechanism*,&SgDirectory::p_attributeMechanism> {
14388 using parent = SgDirectory;
14390 static constexpr size_t position{3};
14391 static constexpr char const * const name{"attributeMechanism"};
14392 static constexpr char const * const typestr{"AstAttributeMechanism*"};
14393 static constexpr bool traverse{false};
14394 static constexpr auto mbr_ptr{&SgDirectory::p_attributeMechanism};
14395 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14396 using bind = Desc<SgDirectory, AstAttributeMechanism* SgDirectory::*, &SgDirectory::p_attributeMechanism>;
14397};
14398template <> struct describe_node_t<SgDirectory> {
14399 using node = SgDirectory;
14400 using base = SgSupport;
14401 static constexpr char const * const name{"Directory"};
14402 static constexpr unsigned long variant{380};
14403 static constexpr bool concrete{true};
14404 using subclasses_t = mp::List<>;
14406};
14407template <> struct node_from_variant_t<380> { using type = SgDirectory; };
14408
14409// Class: DirectoryList
14410template <> struct describe_field_t<SgDirectoryList,SgDirectoryPtrList,&SgDirectoryList::p_listOfDirectories> {
14411 using parent = SgDirectoryList;
14412 using field_type = SgDirectoryPtrList;
14413 static constexpr size_t position{0};
14414 static constexpr char const * const name{"listOfDirectories"};
14415 static constexpr char const * const typestr{"SgDirectoryPtrList"};
14416 static constexpr bool traverse{true};
14417 static constexpr auto mbr_ptr{&SgDirectoryList::p_listOfDirectories};
14418 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14419 using bind = Desc<SgDirectoryList, SgDirectoryPtrList SgDirectoryList::*, &SgDirectoryList::p_listOfDirectories>;
14420};
14422 using node = SgDirectoryList;
14423 using base = SgSupport;
14424 static constexpr char const * const name{"DirectoryList"};
14425 static constexpr unsigned long variant{381};
14426 static constexpr bool concrete{true};
14427 using subclasses_t = mp::List<>;
14429};
14430template <> struct node_from_variant_t<381> { using type = SgDirectoryList; };
14431
14432// Class: DivAssignOp
14433template <> struct describe_node_t<SgDivAssignOp> {
14434 using node = SgDivAssignOp;
14435 using base = SgCompoundAssignOp;
14436 static constexpr char const * const name{"DivAssignOp"};
14437 static constexpr unsigned long variant{382};
14438 static constexpr bool concrete{true};
14439 using subclasses_t = mp::List<>;
14440 using fields_t = mp::List<>;
14441};
14442template <> struct node_from_variant_t<382> { using type = SgDivAssignOp; };
14443
14444// Class: DivideOp
14445template <> struct describe_node_t<SgDivideOp> {
14446 using node = SgDivideOp;
14447 using base = SgBinaryOp;
14448 static constexpr char const * const name{"DivideOp"};
14449 static constexpr unsigned long variant{383};
14450 static constexpr bool concrete{true};
14451 using subclasses_t = mp::List<>;
14452 using fields_t = mp::List<>;
14453};
14454template <> struct node_from_variant_t<383> { using type = SgDivideOp; };
14455
14456// Class: DoWhileStmt
14458 using parent = SgDoWhileStmt;
14459 using field_type = SgStatement*;
14460 static constexpr size_t position{0};
14461 static constexpr char const * const name{"body"};
14462 static constexpr char const * const typestr{"SgStatement*"};
14463 static constexpr bool traverse{true};
14464 static constexpr auto mbr_ptr{&SgDoWhileStmt::p_body};
14465 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14466 using bind = Desc<SgDoWhileStmt, SgStatement* SgDoWhileStmt::*, &SgDoWhileStmt::p_body>;
14467};
14469 using parent = SgDoWhileStmt;
14470 using field_type = SgStatement*;
14471 static constexpr size_t position{1};
14472 static constexpr char const * const name{"condition"};
14473 static constexpr char const * const typestr{"SgStatement*"};
14474 static constexpr bool traverse{true};
14475 static constexpr auto mbr_ptr{&SgDoWhileStmt::p_condition};
14476 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14477 using bind = Desc<SgDoWhileStmt, SgStatement* SgDoWhileStmt::*, &SgDoWhileStmt::p_condition>;
14478};
14479template <> struct describe_node_t<SgDoWhileStmt> {
14480 using node = SgDoWhileStmt;
14481 using base = SgScopeStatement;
14482 static constexpr char const * const name{"DoWhileStmt"};
14483 static constexpr unsigned long variant{384};
14484 static constexpr bool concrete{true};
14485 using subclasses_t = mp::List<>;
14487};
14488template <> struct node_from_variant_t<384> { using type = SgDoWhileStmt; };
14489
14490// Class: DotExp
14491template <> struct describe_node_t<SgDotExp> {
14492 using node = SgDotExp;
14493 using base = SgBinaryOp;
14494 static constexpr char const * const name{"DotExp"};
14495 static constexpr unsigned long variant{385};
14496 static constexpr bool concrete{true};
14497 using subclasses_t = mp::List<>;
14498 using fields_t = mp::List<>;
14499};
14500template <> struct node_from_variant_t<385> { using type = SgDotExp; };
14501
14502// Class: DotStarOp
14503template <> struct describe_node_t<SgDotStarOp> {
14504 using node = SgDotStarOp;
14505 using base = SgBinaryOp;
14506 static constexpr char const * const name{"DotStarOp"};
14507 static constexpr unsigned long variant{386};
14508 static constexpr bool concrete{true};
14509 using subclasses_t = mp::List<>;
14510 using fields_t = mp::List<>;
14511};
14512template <> struct node_from_variant_t<386> { using type = SgDotStarOp; };
14513
14514// Class: DoubleVal
14516 using parent = SgDoubleVal;
14517 using field_type = double;
14518 static constexpr size_t position{0};
14519 static constexpr char const * const name{"value"};
14520 static constexpr char const * const typestr{"double"};
14521 static constexpr bool traverse{false};
14522 static constexpr auto mbr_ptr{&SgDoubleVal::p_value};
14523 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14524 using bind = Desc<SgDoubleVal, double SgDoubleVal::*, &SgDoubleVal::p_value>;
14525};
14526template <> struct describe_field_t<SgDoubleVal,std::string,&SgDoubleVal::p_valueString> {
14527 using parent = SgDoubleVal;
14528 using field_type = std::string;
14529 static constexpr size_t position{1};
14530 static constexpr char const * const name{"valueString"};
14531 static constexpr char const * const typestr{"std::string"};
14532 static constexpr bool traverse{false};
14533 static constexpr auto mbr_ptr{&SgDoubleVal::p_valueString};
14534 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14535 using bind = Desc<SgDoubleVal, std::string SgDoubleVal::*, &SgDoubleVal::p_valueString>;
14536};
14537template <> struct describe_node_t<SgDoubleVal> {
14538 using node = SgDoubleVal;
14539 using base = SgValueExp;
14540 static constexpr char const * const name{"DoubleVal"};
14541 static constexpr unsigned long variant{387};
14542 static constexpr bool concrete{true};
14543 using subclasses_t = mp::List<>;
14545};
14546template <> struct node_from_variant_t<387> { using type = SgDoubleVal; };
14547
14548// Class: ElaboratedTypeModifier
14549template <> struct describe_field_t<SgElaboratedTypeModifier,SgElaboratedTypeModifier::elaborated_type_modifier_enum,&SgElaboratedTypeModifier::p_modifier> {
14552 static constexpr size_t position{0};
14553 static constexpr char const * const name{"modifier"};
14554 static constexpr char const * const typestr{"SgElaboratedTypeModifier::elaborated_type_modifier_enum"};
14555 static constexpr bool traverse{false};
14556 static constexpr auto mbr_ptr{&SgElaboratedTypeModifier::p_modifier};
14557 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14558 using bind = Desc<SgElaboratedTypeModifier, SgElaboratedTypeModifier::elaborated_type_modifier_enum SgElaboratedTypeModifier::*, &SgElaboratedTypeModifier::p_modifier>;
14559};
14562 using base = SgModifier;
14563 static constexpr char const * const name{"ElaboratedTypeModifier"};
14564 static constexpr unsigned long variant{388};
14565 static constexpr bool concrete{true};
14566 using subclasses_t = mp::List<>;
14568};
14569template <> struct node_from_variant_t<388> { using type = SgElaboratedTypeModifier; };
14570
14571// Class: ElementwiseOp
14573 using node = SgElementwiseOp;
14574 using base = SgBinaryOp;
14575 static constexpr char const * const name{"ElementwiseOp"};
14576 static constexpr unsigned long variant{389};
14577 static constexpr bool concrete{false};
14579 using fields_t = mp::List<>;
14580};
14581template <> struct node_from_variant_t<389> { using type = SgElementwiseOp; };
14582
14583// Class: ElementwiseAddOp
14585 using node = SgElementwiseAddOp;
14586 using base = SgElementwiseOp;
14587 static constexpr char const * const name{"ElementwiseAddOp"};
14588 static constexpr unsigned long variant{390};
14589 static constexpr bool concrete{true};
14590 using subclasses_t = mp::List<>;
14591 using fields_t = mp::List<>;
14592};
14593template <> struct node_from_variant_t<390> { using type = SgElementwiseAddOp; };
14594
14595// Class: ElementwiseDivideOp
14598 using base = SgElementwiseOp;
14599 static constexpr char const * const name{"ElementwiseDivideOp"};
14600 static constexpr unsigned long variant{391};
14601 static constexpr bool concrete{true};
14602 using subclasses_t = mp::List<>;
14603 using fields_t = mp::List<>;
14604};
14605template <> struct node_from_variant_t<391> { using type = SgElementwiseDivideOp; };
14606
14607// Class: ElementwiseLeftDivideOp
14610 using base = SgElementwiseOp;
14611 static constexpr char const * const name{"ElementwiseLeftDivideOp"};
14612 static constexpr unsigned long variant{392};
14613 static constexpr bool concrete{true};
14614 using subclasses_t = mp::List<>;
14615 using fields_t = mp::List<>;
14616};
14617template <> struct node_from_variant_t<392> { using type = SgElementwiseLeftDivideOp; };
14618
14619// Class: ElementwiseMultiplyOp
14622 using base = SgElementwiseOp;
14623 static constexpr char const * const name{"ElementwiseMultiplyOp"};
14624 static constexpr unsigned long variant{393};
14625 static constexpr bool concrete{true};
14626 using subclasses_t = mp::List<>;
14627 using fields_t = mp::List<>;
14628};
14629template <> struct node_from_variant_t<393> { using type = SgElementwiseMultiplyOp; };
14630
14631// Class: ElementwisePowerOp
14633 using node = SgElementwisePowerOp;
14634 using base = SgElementwiseOp;
14635 static constexpr char const * const name{"ElementwisePowerOp"};
14636 static constexpr unsigned long variant{394};
14637 static constexpr bool concrete{true};
14638 using subclasses_t = mp::List<>;
14639 using fields_t = mp::List<>;
14640};
14641template <> struct node_from_variant_t<394> { using type = SgElementwisePowerOp; };
14642
14643// Class: ElementwiseSubtractOp
14646 using base = SgElementwiseOp;
14647 static constexpr char const * const name{"ElementwiseSubtractOp"};
14648 static constexpr unsigned long variant{395};
14649 static constexpr bool concrete{true};
14650 using subclasses_t = mp::List<>;
14651 using fields_t = mp::List<>;
14652};
14653template <> struct node_from_variant_t<395> { using type = SgElementwiseSubtractOp; };
14654
14655// Class: ElseDirectiveStatement
14659 static constexpr char const * const name{"ElseDirectiveStatement"};
14660 static constexpr unsigned long variant{396};
14661 static constexpr bool concrete{true};
14662 using subclasses_t = mp::List<>;
14663 using fields_t = mp::List<>;
14664};
14665template <> struct node_from_variant_t<396> { using type = SgElseDirectiveStatement; };
14666
14667// Class: ElseWhereStatement
14668template <> struct describe_field_t<SgElseWhereStatement,SgExpression*,&SgElseWhereStatement::p_condition> {
14670 using field_type = SgExpression*;
14671 static constexpr size_t position{0};
14672 static constexpr char const * const name{"condition"};
14673 static constexpr char const * const typestr{"SgExpression*"};
14674 static constexpr bool traverse{true};
14675 static constexpr auto mbr_ptr{&SgElseWhereStatement::p_condition};
14676 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14677 using bind = Desc<SgElseWhereStatement, SgExpression* SgElseWhereStatement::*, &SgElseWhereStatement::p_condition>;
14678};
14679template <> struct describe_field_t<SgElseWhereStatement,SgBasicBlock*,&SgElseWhereStatement::p_body> {
14681 using field_type = SgBasicBlock*;
14682 static constexpr size_t position{1};
14683 static constexpr char const * const name{"body"};
14684 static constexpr char const * const typestr{"SgBasicBlock*"};
14685 static constexpr bool traverse{true};
14686 static constexpr auto mbr_ptr{&SgElseWhereStatement::p_body};
14687 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14688 using bind = Desc<SgElseWhereStatement, SgBasicBlock* SgElseWhereStatement::*, &SgElseWhereStatement::p_body>;
14689};
14690template <> struct describe_field_t<SgElseWhereStatement,SgElseWhereStatement*,&SgElseWhereStatement::p_elsewhere> {
14693 static constexpr size_t position{2};
14694 static constexpr char const * const name{"elsewhere"};
14695 static constexpr char const * const typestr{"SgElseWhereStatement*"};
14696 static constexpr bool traverse{true};
14697 static constexpr auto mbr_ptr{&SgElseWhereStatement::p_elsewhere};
14698 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14699 using bind = Desc<SgElseWhereStatement, SgElseWhereStatement* SgElseWhereStatement::*, &SgElseWhereStatement::p_elsewhere>;
14700};
14702 using node = SgElseWhereStatement;
14703 using base = SgStatement;
14704 static constexpr char const * const name{"ElseWhereStatement"};
14705 static constexpr unsigned long variant{397};
14706 static constexpr bool concrete{true};
14707 using subclasses_t = mp::List<>;
14709};
14710template <> struct node_from_variant_t<397> { using type = SgElseWhereStatement; };
14711
14712// Class: ElseifDirectiveStatement
14716 static constexpr char const * const name{"ElseifDirectiveStatement"};
14717 static constexpr unsigned long variant{398};
14718 static constexpr bool concrete{true};
14719 using subclasses_t = mp::List<>;
14720 using fields_t = mp::List<>;
14721};
14722template <> struct node_from_variant_t<398> { using type = SgElseifDirectiveStatement; };
14723
14724// Class: EmptyDeclaration
14726 using node = SgEmptyDeclaration;
14728 static constexpr char const * const name{"EmptyDeclaration"};
14729 static constexpr unsigned long variant{399};
14730 static constexpr bool concrete{true};
14731 using subclasses_t = mp::List<>;
14732 using fields_t = mp::List<>;
14733};
14734template <> struct node_from_variant_t<399> { using type = SgEmptyDeclaration; };
14735
14736// Class: EmptyDirectiveStatement
14740 static constexpr char const * const name{"EmptyDirectiveStatement"};
14741 static constexpr unsigned long variant{400};
14742 static constexpr bool concrete{true};
14743 using subclasses_t = mp::List<>;
14744 using fields_t = mp::List<>;
14745};
14746template <> struct node_from_variant_t<400> { using type = SgEmptyDirectiveStatement; };
14747
14748// Class: EndfileStatement
14750 using node = SgEndfileStatement;
14751 using base = SgIOStatement;
14752 static constexpr char const * const name{"EndfileStatement"};
14753 static constexpr unsigned long variant{401};
14754 static constexpr bool concrete{true};
14755 using subclasses_t = mp::List<>;
14756 using fields_t = mp::List<>;
14757};
14758template <> struct node_from_variant_t<401> { using type = SgEndfileStatement; };
14759
14760// Class: EndifDirectiveStatement
14764 static constexpr char const * const name{"EndifDirectiveStatement"};
14765 static constexpr unsigned long variant{402};
14766 static constexpr bool concrete{true};
14767 using subclasses_t = mp::List<>;
14768 using fields_t = mp::List<>;
14769};
14770template <> struct node_from_variant_t<402> { using type = SgEndifDirectiveStatement; };
14771
14772// Class: EntryStatement
14773template <> struct describe_field_t<SgEntryStatement,SgInitializedName*,&SgEntryStatement::p_result_name> {
14774 using parent = SgEntryStatement;
14776 static constexpr size_t position{0};
14777 static constexpr char const * const name{"result_name"};
14778 static constexpr char const * const typestr{"SgInitializedName*"};
14779 static constexpr bool traverse{true};
14780 static constexpr auto mbr_ptr{&SgEntryStatement::p_result_name};
14781 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14782 using bind = Desc<SgEntryStatement, SgInitializedName* SgEntryStatement::*, &SgEntryStatement::p_result_name>;
14783};
14785 using node = SgEntryStatement;
14787 static constexpr char const * const name{"EntryStatement"};
14788 static constexpr unsigned long variant{403};
14789 static constexpr bool concrete{true};
14790 using subclasses_t = mp::List<>;
14792};
14793template <> struct node_from_variant_t<403> { using type = SgEntryStatement; };
14794
14795// Class: EnumDeclaration
14797 using parent = SgEnumDeclaration;
14798 using field_type = SgName;
14799 static constexpr size_t position{0};
14800 static constexpr char const * const name{"name"};
14801 static constexpr char const * const typestr{"SgName"};
14802 static constexpr bool traverse{false};
14803 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_name};
14804 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14805 using bind = Desc<SgEnumDeclaration, SgName SgEnumDeclaration::*, &SgEnumDeclaration::p_name>;
14806};
14808 using parent = SgEnumDeclaration;
14809 using field_type = bool;
14810 static constexpr size_t position{1};
14811 static constexpr char const * const name{"embedded"};
14812 static constexpr char const * const typestr{"bool"};
14813 static constexpr bool traverse{false};
14814 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_embedded};
14815 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14816 using bind = Desc<SgEnumDeclaration, bool SgEnumDeclaration::*, &SgEnumDeclaration::p_embedded>;
14817};
14819 using parent = SgEnumDeclaration;
14820 using field_type = SgEnumType*;
14821 static constexpr size_t position{2};
14822 static constexpr char const * const name{"type"};
14823 static constexpr char const * const typestr{"SgEnumType*"};
14824 static constexpr bool traverse{false};
14825 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_type};
14826 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14827 using bind = Desc<SgEnumDeclaration, SgEnumType* SgEnumDeclaration::*, &SgEnumDeclaration::p_type>;
14828};
14829template <> struct describe_field_t<SgEnumDeclaration,SgType*,&SgEnumDeclaration::p_adaParentType> {
14830 using parent = SgEnumDeclaration;
14831 using field_type = SgType*;
14832 static constexpr size_t position{3};
14833 static constexpr char const * const name{"adaParentType"};
14834 static constexpr char const * const typestr{"SgType*"};
14835 static constexpr bool traverse{false};
14836 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_adaParentType};
14837 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14838 using bind = Desc<SgEnumDeclaration, SgType* SgEnumDeclaration::*, &SgEnumDeclaration::p_adaParentType>;
14839};
14840template <> struct describe_field_t<SgEnumDeclaration,SgInitializedNamePtrList,&SgEnumDeclaration::p_enumerators> {
14841 using parent = SgEnumDeclaration;
14842 using field_type = SgInitializedNamePtrList;
14843 static constexpr size_t position{4};
14844 static constexpr char const * const name{"enumerators"};
14845 static constexpr char const * const typestr{"SgInitializedNamePtrList"};
14846 static constexpr bool traverse{true};
14847 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_enumerators};
14848 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14849 using bind = Desc<SgEnumDeclaration, SgInitializedNamePtrList SgEnumDeclaration::*, &SgEnumDeclaration::p_enumerators>;
14850};
14852 using parent = SgEnumDeclaration;
14854 static constexpr size_t position{5};
14855 static constexpr char const * const name{"scope"};
14856 static constexpr char const * const typestr{"SgScopeStatement*"};
14857 static constexpr bool traverse{false};
14858 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_scope};
14859 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14860 using bind = Desc<SgEnumDeclaration, SgScopeStatement* SgEnumDeclaration::*, &SgEnumDeclaration::p_scope>;
14861};
14862template <> struct describe_field_t<SgEnumDeclaration,bool,&SgEnumDeclaration::p_isUnNamed> {
14863 using parent = SgEnumDeclaration;
14864 using field_type = bool;
14865 static constexpr size_t position{6};
14866 static constexpr char const * const name{"isUnNamed"};
14867 static constexpr char const * const typestr{"bool"};
14868 static constexpr bool traverse{false};
14869 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_isUnNamed};
14870 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14871 using bind = Desc<SgEnumDeclaration, bool SgEnumDeclaration::*, &SgEnumDeclaration::p_isUnNamed>;
14872};
14873template <> struct describe_field_t<SgEnumDeclaration,bool,&SgEnumDeclaration::p_isAutonomousDeclaration> {
14874 using parent = SgEnumDeclaration;
14875 using field_type = bool;
14876 static constexpr size_t position{7};
14877 static constexpr char const * const name{"isAutonomousDeclaration"};
14878 static constexpr char const * const typestr{"bool"};
14879 static constexpr bool traverse{false};
14880 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_isAutonomousDeclaration};
14881 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14882 using bind = Desc<SgEnumDeclaration, bool SgEnumDeclaration::*, &SgEnumDeclaration::p_isAutonomousDeclaration>;
14883};
14884template <> struct describe_field_t<SgEnumDeclaration,SgType*,&SgEnumDeclaration::p_field_type> {
14885 using parent = SgEnumDeclaration;
14886 using field_type = SgType*;
14887 static constexpr size_t position{8};
14888 static constexpr char const * const name{"field_type"};
14889 static constexpr char const * const typestr{"SgType*"};
14890 static constexpr bool traverse{false};
14891 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_field_type};
14892 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14893 using bind = Desc<SgEnumDeclaration, SgType* SgEnumDeclaration::*, &SgEnumDeclaration::p_field_type>;
14894};
14895template <> struct describe_field_t<SgEnumDeclaration,bool,&SgEnumDeclaration::p_isScopedEnum> {
14896 using parent = SgEnumDeclaration;
14897 using field_type = bool;
14898 static constexpr size_t position{9};
14899 static constexpr char const * const name{"isScopedEnum"};
14900 static constexpr char const * const typestr{"bool"};
14901 static constexpr bool traverse{false};
14902 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_isScopedEnum};
14903 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14904 using bind = Desc<SgEnumDeclaration, bool SgEnumDeclaration::*, &SgEnumDeclaration::p_isScopedEnum>;
14905};
14906template <> struct describe_field_t<SgEnumDeclaration,int,&SgEnumDeclaration::p_name_qualification_length> {
14907 using parent = SgEnumDeclaration;
14908 using field_type = int;
14909 static constexpr size_t position{10};
14910 static constexpr char const * const name{"name_qualification_length"};
14911 static constexpr char const * const typestr{"int"};
14912 static constexpr bool traverse{false};
14913 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_name_qualification_length};
14914 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14915 using bind = Desc<SgEnumDeclaration, int SgEnumDeclaration::*, &SgEnumDeclaration::p_name_qualification_length>;
14916};
14917template <> struct describe_field_t<SgEnumDeclaration,bool,&SgEnumDeclaration::p_type_elaboration_required> {
14918 using parent = SgEnumDeclaration;
14919 using field_type = bool;
14920 static constexpr size_t position{11};
14921 static constexpr char const * const name{"type_elaboration_required"};
14922 static constexpr char const * const typestr{"bool"};
14923 static constexpr bool traverse{false};
14924 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_type_elaboration_required};
14925 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14926 using bind = Desc<SgEnumDeclaration, bool SgEnumDeclaration::*, &SgEnumDeclaration::p_type_elaboration_required>;
14927};
14928template <> struct describe_field_t<SgEnumDeclaration,bool,&SgEnumDeclaration::p_global_qualification_required> {
14929 using parent = SgEnumDeclaration;
14930 using field_type = bool;
14931 static constexpr size_t position{12};
14932 static constexpr char const * const name{"global_qualification_required"};
14933 static constexpr char const * const typestr{"bool"};
14934 static constexpr bool traverse{false};
14935 static constexpr auto mbr_ptr{&SgEnumDeclaration::p_global_qualification_required};
14936 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14937 using bind = Desc<SgEnumDeclaration, bool SgEnumDeclaration::*, &SgEnumDeclaration::p_global_qualification_required>;
14938};
14948template <> struct node_from_variant_t<404> { using type = SgEnumDeclaration; };
14949
14950// Class: EnumFieldSymbol
14951template <> struct describe_field_t<SgEnumFieldSymbol,SgInitializedName*,&SgEnumFieldSymbol::p_declaration> {
14952 using parent = SgEnumFieldSymbol;
14954 static constexpr size_t position{0};
14955 static constexpr char const * const name{"declaration"};
14956 static constexpr char const * const typestr{"SgInitializedName*"};
14957 static constexpr bool traverse{false};
14958 static constexpr auto mbr_ptr{&SgEnumFieldSymbol::p_declaration};
14959 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14960 using bind = Desc<SgEnumFieldSymbol, SgInitializedName* SgEnumFieldSymbol::*, &SgEnumFieldSymbol::p_declaration>;
14961};
14963 using node = SgEnumFieldSymbol;
14964 using base = SgSymbol;
14965 static constexpr char const * const name{"EnumFieldSymbol"};
14966 static constexpr unsigned long variant{405};
14967 static constexpr bool concrete{true};
14968 using subclasses_t = mp::List<>;
14970};
14971template <> struct node_from_variant_t<405> { using type = SgEnumFieldSymbol; };
14972
14973// Class: EnumSymbol
14974template <> struct describe_field_t<SgEnumSymbol,SgEnumDeclaration*,&SgEnumSymbol::p_declaration> {
14975 using parent = SgEnumSymbol;
14977 static constexpr size_t position{0};
14978 static constexpr char const * const name{"declaration"};
14979 static constexpr char const * const typestr{"SgEnumDeclaration*"};
14980 static constexpr bool traverse{true};
14981 static constexpr auto mbr_ptr{&SgEnumSymbol::p_declaration};
14982 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
14983 using bind = Desc<SgEnumSymbol, SgEnumDeclaration* SgEnumSymbol::*, &SgEnumSymbol::p_declaration>;
14984};
14985template <> struct describe_node_t<SgEnumSymbol> {
14986 using node = SgEnumSymbol;
14987 using base = SgSymbol;
14988 static constexpr char const * const name{"EnumSymbol"};
14989 static constexpr unsigned long variant{406};
14990 static constexpr bool concrete{true};
14991 using subclasses_t = mp::List<>;
14993};
14994template <> struct node_from_variant_t<406> { using type = SgEnumSymbol; };
14995
14996// Class: EnumType
14997template <> struct describe_node_t<SgEnumType> {
14998 using node = SgEnumType;
14999 using base = SgNamedType;
15000 static constexpr char const * const name{"EnumType"};
15001 static constexpr unsigned long variant{407};
15002 static constexpr bool concrete{true};
15003 using subclasses_t = mp::List<>;
15004 using fields_t = mp::List<>;
15005};
15006template <> struct node_from_variant_t<407> { using type = SgEnumType; };
15007
15008// Class: EnumVal
15009template <> struct describe_field_t<SgEnumVal,long long int,&SgEnumVal::p_value> {
15010 using parent = SgEnumVal;
15011 using field_type = long long int;
15012 static constexpr size_t position{0};
15013 static constexpr char const * const name{"value"};
15014 static constexpr char const * const typestr{"long long int"};
15015 static constexpr bool traverse{false};
15016 static constexpr auto mbr_ptr{&SgEnumVal::p_value};
15017 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15018 using bind = Desc<SgEnumVal, long long int SgEnumVal::*, &SgEnumVal::p_value>;
15019};
15020template <> struct describe_field_t<SgEnumVal,SgEnumDeclaration*,&SgEnumVal::p_declaration> {
15021 using parent = SgEnumVal;
15023 static constexpr size_t position{1};
15024 static constexpr char const * const name{"declaration"};
15025 static constexpr char const * const typestr{"SgEnumDeclaration*"};
15026 static constexpr bool traverse{false};
15027 static constexpr auto mbr_ptr{&SgEnumVal::p_declaration};
15028 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15029 using bind = Desc<SgEnumVal, SgEnumDeclaration* SgEnumVal::*, &SgEnumVal::p_declaration>;
15030};
15031template <> struct describe_field_t<SgEnumVal,SgName,&SgEnumVal::p_name> {
15032 using parent = SgEnumVal;
15033 using field_type = SgName;
15034 static constexpr size_t position{2};
15035 static constexpr char const * const name{"name"};
15036 static constexpr char const * const typestr{"SgName"};
15037 static constexpr bool traverse{false};
15038 static constexpr auto mbr_ptr{&SgEnumVal::p_name};
15039 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15040 using bind = Desc<SgEnumVal, SgName SgEnumVal::*, &SgEnumVal::p_name>;
15041};
15042template <> struct describe_field_t<SgEnumVal,bool,&SgEnumVal::p_requiresNameQualification> {
15043 using parent = SgEnumVal;
15044 using field_type = bool;
15045 static constexpr size_t position{3};
15046 static constexpr char const * const name{"requiresNameQualification"};
15047 static constexpr char const * const typestr{"bool"};
15048 static constexpr bool traverse{false};
15049 static constexpr auto mbr_ptr{&SgEnumVal::p_requiresNameQualification};
15050 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15051 using bind = Desc<SgEnumVal, bool SgEnumVal::*, &SgEnumVal::p_requiresNameQualification>;
15052};
15053template <> struct describe_field_t<SgEnumVal,int,&SgEnumVal::p_name_qualification_length> {
15054 using parent = SgEnumVal;
15055 using field_type = int;
15056 static constexpr size_t position{4};
15057 static constexpr char const * const name{"name_qualification_length"};
15058 static constexpr char const * const typestr{"int"};
15059 static constexpr bool traverse{false};
15060 static constexpr auto mbr_ptr{&SgEnumVal::p_name_qualification_length};
15061 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15062 using bind = Desc<SgEnumVal, int SgEnumVal::*, &SgEnumVal::p_name_qualification_length>;
15063};
15064template <> struct describe_field_t<SgEnumVal,bool,&SgEnumVal::p_type_elaboration_required> {
15065 using parent = SgEnumVal;
15066 using field_type = bool;
15067 static constexpr size_t position{5};
15068 static constexpr char const * const name{"type_elaboration_required"};
15069 static constexpr char const * const typestr{"bool"};
15070 static constexpr bool traverse{false};
15071 static constexpr auto mbr_ptr{&SgEnumVal::p_type_elaboration_required};
15072 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15073 using bind = Desc<SgEnumVal, bool SgEnumVal::*, &SgEnumVal::p_type_elaboration_required>;
15074};
15075template <> struct describe_field_t<SgEnumVal,bool,&SgEnumVal::p_global_qualification_required> {
15076 using parent = SgEnumVal;
15077 using field_type = bool;
15078 static constexpr size_t position{6};
15079 static constexpr char const * const name{"global_qualification_required"};
15080 static constexpr char const * const typestr{"bool"};
15081 static constexpr bool traverse{false};
15082 static constexpr auto mbr_ptr{&SgEnumVal::p_global_qualification_required};
15083 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15084 using bind = Desc<SgEnumVal, bool SgEnumVal::*, &SgEnumVal::p_global_qualification_required>;
15085};
15095template <> struct node_from_variant_t<408> { using type = SgEnumVal; };
15096
15097// Class: EqualityOp
15098template <> struct describe_node_t<SgEqualityOp> {
15099 using node = SgEqualityOp;
15100 using base = SgBinaryOp;
15101 static constexpr char const * const name{"EqualityOp"};
15102 static constexpr unsigned long variant{409};
15103 static constexpr bool concrete{true};
15104 using subclasses_t = mp::List<>;
15105 using fields_t = mp::List<>;
15106};
15107template <> struct node_from_variant_t<409> { using type = SgEqualityOp; };
15108
15109// Class: EquivalenceStatement
15110template <> struct describe_field_t<SgEquivalenceStatement,SgExprListExp*,&SgEquivalenceStatement::p_equivalence_set_list> {
15112 using field_type = SgExprListExp*;
15113 static constexpr size_t position{0};
15114 static constexpr char const * const name{"equivalence_set_list"};
15115 static constexpr char const * const typestr{"SgExprListExp*"};
15116 static constexpr bool traverse{false};
15117 static constexpr auto mbr_ptr{&SgEquivalenceStatement::p_equivalence_set_list};
15118 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15119 using bind = Desc<SgEquivalenceStatement, SgExprListExp* SgEquivalenceStatement::*, &SgEquivalenceStatement::p_equivalence_set_list>;
15120};
15124 static constexpr char const * const name{"EquivalenceStatement"};
15125 static constexpr unsigned long variant{410};
15126 static constexpr bool concrete{true};
15127 using subclasses_t = mp::List<>;
15129};
15130template <> struct node_from_variant_t<410> { using type = SgEquivalenceStatement; };
15131
15132// Class: ErrorDirectiveStatement
15136 static constexpr char const * const name{"ErrorDirectiveStatement"};
15137 static constexpr unsigned long variant{411};
15138 static constexpr bool concrete{true};
15139 using subclasses_t = mp::List<>;
15140 using fields_t = mp::List<>;
15141};
15142template <> struct node_from_variant_t<411> { using type = SgErrorDirectiveStatement; };
15143
15144// Class: ExecStatement
15146 using parent = SgExecStatement;
15147 using field_type = SgExpression*;
15148 static constexpr size_t position{0};
15149 static constexpr char const * const name{"executable"};
15150 static constexpr char const * const typestr{"SgExpression*"};
15151 static constexpr bool traverse{true};
15152 static constexpr auto mbr_ptr{&SgExecStatement::p_executable};
15153 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15154 using bind = Desc<SgExecStatement, SgExpression* SgExecStatement::*, &SgExecStatement::p_executable>;
15155};
15157 using parent = SgExecStatement;
15158 using field_type = SgExpression*;
15159 static constexpr size_t position{1};
15160 static constexpr char const * const name{"globals"};
15161 static constexpr char const * const typestr{"SgExpression*"};
15162 static constexpr bool traverse{true};
15163 static constexpr auto mbr_ptr{&SgExecStatement::p_globals};
15164 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15165 using bind = Desc<SgExecStatement, SgExpression* SgExecStatement::*, &SgExecStatement::p_globals>;
15166};
15168 using parent = SgExecStatement;
15169 using field_type = SgExpression*;
15170 static constexpr size_t position{2};
15171 static constexpr char const * const name{"locals"};
15172 static constexpr char const * const typestr{"SgExpression*"};
15173 static constexpr bool traverse{true};
15174 static constexpr auto mbr_ptr{&SgExecStatement::p_locals};
15175 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15176 using bind = Desc<SgExecStatement, SgExpression* SgExecStatement::*, &SgExecStatement::p_locals>;
15177};
15179 using node = SgExecStatement;
15180 using base = SgStatement;
15181 static constexpr char const * const name{"ExecStatement"};
15182 static constexpr unsigned long variant{412};
15183 static constexpr bool concrete{true};
15184 using subclasses_t = mp::List<>;
15186};
15187template <> struct node_from_variant_t<412> { using type = SgExecStatement; };
15188
15189// Class: ExponentiationOp
15191 using node = SgExponentiationOp;
15192 using base = SgBinaryOp;
15193 static constexpr char const * const name{"ExponentiationOp"};
15194 static constexpr unsigned long variant{413};
15195 static constexpr bool concrete{true};
15196 using subclasses_t = mp::List<>;
15197 using fields_t = mp::List<>;
15198};
15199template <> struct node_from_variant_t<413> { using type = SgExponentiationOp; };
15200
15201// Class: ExponentiationAssignOp
15204 using base = SgCompoundAssignOp;
15205 static constexpr char const * const name{"ExponentiationAssignOp"};
15206 static constexpr unsigned long variant{414};
15207 static constexpr bool concrete{true};
15208 using subclasses_t = mp::List<>;
15209 using fields_t = mp::List<>;
15210};
15211template <> struct node_from_variant_t<414> { using type = SgExponentiationAssignOp; };
15212
15213// Class: ExprListExp
15214template <> struct describe_field_t<SgExprListExp,SgExpressionPtrList,&SgExprListExp::p_expressions> {
15215 using parent = SgExprListExp;
15216 using field_type = SgExpressionPtrList;
15217 static constexpr size_t position{0};
15218 static constexpr char const * const name{"expressions"};
15219 static constexpr char const * const typestr{"SgExpressionPtrList"};
15220 static constexpr bool traverse{true};
15221 static constexpr auto mbr_ptr{&SgExprListExp::p_expressions};
15222 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15223 using bind = Desc<SgExprListExp, SgExpressionPtrList SgExprListExp::*, &SgExprListExp::p_expressions>;
15224};
15225template <> struct describe_node_t<SgExprListExp> {
15226 using node = SgExprListExp;
15227 using base = SgExpression;
15228 static constexpr char const * const name{"ExprListExp"};
15229 static constexpr unsigned long variant{415};
15230 static constexpr bool concrete{true};
15233};
15234template <> struct node_from_variant_t<415> { using type = SgExprListExp; };
15235
15236// Class: ExprStatement
15237template <> struct describe_field_t<SgExprStatement,SgExpression*,&SgExprStatement::p_expression> {
15238 using parent = SgExprStatement;
15239 using field_type = SgExpression*;
15240 static constexpr size_t position{0};
15241 static constexpr char const * const name{"expression"};
15242 static constexpr char const * const typestr{"SgExpression*"};
15243 static constexpr bool traverse{true};
15244 static constexpr auto mbr_ptr{&SgExprStatement::p_expression};
15245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15246 using bind = Desc<SgExprStatement, SgExpression* SgExprStatement::*, &SgExprStatement::p_expression>;
15247};
15249 using node = SgExprStatement;
15250 using base = SgStatement;
15251 static constexpr char const * const name{"ExprStatement"};
15252 static constexpr unsigned long variant{416};
15253 static constexpr bool concrete{true};
15254 using subclasses_t = mp::List<>;
15256};
15257template <> struct node_from_variant_t<416> { using type = SgExprStatement; };
15258
15259// Class: Expression
15261 using parent = SgExpression;
15262 using field_type = bool;
15263 static constexpr size_t position{0};
15264 static constexpr char const * const name{"need_paren"};
15265 static constexpr char const * const typestr{"bool"};
15266 static constexpr bool traverse{false};
15267 static constexpr auto mbr_ptr{&SgExpression::p_need_paren};
15268 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15269 using bind = Desc<SgExpression, bool SgExpression::*, &SgExpression::p_need_paren>;
15270};
15272 using parent = SgExpression;
15273 using field_type = bool;
15274 static constexpr size_t position{1};
15275 static constexpr char const * const name{"lvalue"};
15276 static constexpr char const * const typestr{"bool"};
15277 static constexpr bool traverse{false};
15278 static constexpr auto mbr_ptr{&SgExpression::p_lvalue};
15279 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15280 using bind = Desc<SgExpression, bool SgExpression::*, &SgExpression::p_lvalue>;
15281};
15282template <> struct describe_field_t<SgExpression,bool,&SgExpression::p_global_qualified_name> {
15283 using parent = SgExpression;
15284 using field_type = bool;
15285 static constexpr size_t position{2};
15286 static constexpr char const * const name{"global_qualified_name"};
15287 static constexpr char const * const typestr{"bool"};
15288 static constexpr bool traverse{false};
15289 static constexpr auto mbr_ptr{&SgExpression::p_global_qualified_name};
15290 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15291 using bind = Desc<SgExpression, bool SgExpression::*, &SgExpression::p_global_qualified_name>;
15292};
15293template <> struct describe_field_t<SgExpression,Sg_File_Info*,&SgExpression::p_operatorPosition> {
15294 using parent = SgExpression;
15295 using field_type = Sg_File_Info*;
15296 static constexpr size_t position{3};
15297 static constexpr char const * const name{"operatorPosition"};
15298 static constexpr char const * const typestr{"Sg_File_Info*"};
15299 static constexpr bool traverse{false};
15300 static constexpr auto mbr_ptr{&SgExpression::p_operatorPosition};
15301 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15302 using bind = Desc<SgExpression, Sg_File_Info* SgExpression::*, &SgExpression::p_operatorPosition>;
15303};
15304template <> struct describe_node_t<SgExpression> {
15305 using node = SgExpression;
15306 using base = SgLocatedNode;
15307 static constexpr char const * const name{"Expression"};
15308 static constexpr unsigned long variant{417};
15309 static constexpr bool concrete{false};
15310 using subclasses_t = mp::List<SgUnaryOp, SgBinaryOp, SgExprListExp, SgVarRefExp, SgClassNameRefExp, SgFunctionRefExp, SgMemberFunctionRefExp, SgValueExp, SgCallExpression, SgSizeOfOp, SgUpcLocalsizeofExpression, SgUpcBlocksizeofExpression, SgUpcElemsizeofExpression, SgJavaInstanceOfOp, SgSuperExp, SgTypeIdOp, SgConditionalExp, SgNewExp, SgDeleteExp, SgThisExp, SgRefExp, SgInitializer, SgVarArgStartOp, SgVarArgOp, SgVarArgEndOp, SgVarArgCopyOp, SgVarArgStartOneOperandOp, SgNullExpression, SgVariantExpression, SgSubscriptExpression, SgColonShapeExp, SgAsteriskShapeExp, SgImpliedDo, SgIOItemExpression, SgStatementExpression, SgAsmOp, SgLabelRefExp, SgActualArgumentExpression, SgUnknownArrayOrFunctionReference, SgPseudoDestructorRefExp, SgCAFCoExpression, SgCudaKernelExecConfig, SgLambdaRefExp, SgDictionaryExp, SgKeyDatumPair, SgComprehension, SgListComprehension, SgSetComprehension, SgDictionaryComprehension, SgNaryOp, SgStringConversion, SgYieldExpression, SgTemplateFunctionRefExp, SgTemplateMemberFunctionRefExp, SgAlignOfOp, SgRangeExp, SgMagicColonExp, SgTypeTraitBuiltinOperator, SgCompoundLiteralExp, SgJavaAnnotation, SgJavaTypeExpression, SgTypeExpression, SgClassExp, SgFunctionParameterRefExp, SgLambdaExp, SgHereExp, SgAtExp, SgFinishExp, SgNoexceptOp, SgNonrealRefExp, SgAdaTaskRefExp, SgAdaProtectedRefExp, SgFoldExpression, SgAwaitExpression, SgChooseExpression, SgAdaAttributeExp, SgJovialTablePresetExp, SgJovialPresetPositionExp, SgAdaOthersExp, SgAdaRenamingRefExp, SgAdaUnitRefExp>;
15312};
15313template <> struct node_from_variant_t<417> { using type = SgExpression; };
15314
15315// Class: ExpressionRoot
15317 using node = SgExpressionRoot;
15318 using base = SgUnaryOp;
15319 static constexpr char const * const name{"ExpressionRoot"};
15320 static constexpr unsigned long variant{418};
15321 static constexpr bool concrete{true};
15322 using subclasses_t = mp::List<>;
15323 using fields_t = mp::List<>;
15324};
15325template <> struct node_from_variant_t<418> { using type = SgExpressionRoot; };
15326
15327// Class: File
15328template <> struct describe_field_t<SgFile,Sg_File_Info*,&SgFile::p_startOfConstruct> {
15329 using parent = SgFile;
15330 using field_type = Sg_File_Info*;
15331 static constexpr size_t position{0};
15332 static constexpr char const * const name{"startOfConstruct"};
15333 static constexpr char const * const typestr{"Sg_File_Info*"};
15334 static constexpr bool traverse{false};
15335 static constexpr auto mbr_ptr{&SgFile::p_startOfConstruct};
15336 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15337 using bind = Desc<SgFile, Sg_File_Info* SgFile::*, &SgFile::p_startOfConstruct>;
15338};
15340 using parent = SgFile;
15341 using field_type = SgStringList;
15342 static constexpr size_t position{1};
15343 static constexpr char const * const name{"originalCommandLineArgumentList"};
15344 static constexpr char const * const typestr{"SgStringList"};
15345 static constexpr bool traverse{false};
15346 static constexpr auto mbr_ptr{&SgFile::p_originalCommandLineArgumentList};
15347 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15348 using bind = Desc<SgFile, SgStringList SgFile::*, &SgFile::p_originalCommandLineArgumentList>;
15349};
15350template <> struct describe_field_t<SgFile,int,&SgFile::p_verbose> {
15351 using parent = SgFile;
15352 using field_type = int;
15353 static constexpr size_t position{2};
15354 static constexpr char const * const name{"verbose"};
15355 static constexpr char const * const typestr{"int"};
15356 static constexpr bool traverse{false};
15357 static constexpr auto mbr_ptr{&SgFile::p_verbose};
15358 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15359 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_verbose>;
15360};
15361template <> struct describe_field_t<SgFile,bool,&SgFile::p_output_warnings> {
15362 using parent = SgFile;
15363 using field_type = bool;
15364 static constexpr size_t position{3};
15365 static constexpr char const * const name{"output_warnings"};
15366 static constexpr char const * const typestr{"bool"};
15367 static constexpr bool traverse{false};
15368 static constexpr auto mbr_ptr{&SgFile::p_output_warnings};
15369 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15370 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_output_warnings>;
15371};
15372template <> struct describe_field_t<SgFile,bool,&SgFile::p_C_only> {
15373 using parent = SgFile;
15374 using field_type = bool;
15375 static constexpr size_t position{4};
15376 static constexpr char const * const name{"C_only"};
15377 static constexpr char const * const typestr{"bool"};
15378 static constexpr bool traverse{false};
15379 static constexpr auto mbr_ptr{&SgFile::p_C_only};
15380 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15381 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_C_only>;
15382};
15383template <> struct describe_field_t<SgFile,bool,&SgFile::p_Cxx_only> {
15384 using parent = SgFile;
15385 using field_type = bool;
15386 static constexpr size_t position{5};
15387 static constexpr char const * const name{"Cxx_only"};
15388 static constexpr char const * const typestr{"bool"};
15389 static constexpr bool traverse{false};
15390 static constexpr auto mbr_ptr{&SgFile::p_Cxx_only};
15391 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15392 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Cxx_only>;
15393};
15394template <> struct describe_field_t<SgFile,bool,&SgFile::p_Fortran_only> {
15395 using parent = SgFile;
15396 using field_type = bool;
15397 static constexpr size_t position{6};
15398 static constexpr char const * const name{"Fortran_only"};
15399 static constexpr char const * const typestr{"bool"};
15400 static constexpr bool traverse{false};
15401 static constexpr auto mbr_ptr{&SgFile::p_Fortran_only};
15402 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15403 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Fortran_only>;
15404};
15405template <> struct describe_field_t<SgFile,bool,&SgFile::p_CoArrayFortran_only> {
15406 using parent = SgFile;
15407 using field_type = bool;
15408 static constexpr size_t position{7};
15409 static constexpr char const * const name{"CoArrayFortran_only"};
15410 static constexpr char const * const typestr{"bool"};
15411 static constexpr bool traverse{false};
15412 static constexpr auto mbr_ptr{&SgFile::p_CoArrayFortran_only};
15413 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15414 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_CoArrayFortran_only>;
15415};
15416template <> struct describe_field_t<SgFile,int,&SgFile::p_upc_threads> {
15417 using parent = SgFile;
15418 using field_type = int;
15419 static constexpr size_t position{8};
15420 static constexpr char const * const name{"upc_threads"};
15421 static constexpr char const * const typestr{"int"};
15422 static constexpr bool traverse{false};
15423 static constexpr auto mbr_ptr{&SgFile::p_upc_threads};
15424 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15425 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_upc_threads>;
15426};
15427template <> struct describe_field_t<SgFile,bool,&SgFile::p_Java_only> {
15428 using parent = SgFile;
15429 using field_type = bool;
15430 static constexpr size_t position{9};
15431 static constexpr char const * const name{"Java_only"};
15432 static constexpr char const * const typestr{"bool"};
15433 static constexpr bool traverse{false};
15434 static constexpr auto mbr_ptr{&SgFile::p_Java_only};
15435 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15436 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Java_only>;
15437};
15438template <> struct describe_field_t<SgFile,bool,&SgFile::p_Jvm_only> {
15439 using parent = SgFile;
15440 using field_type = bool;
15441 static constexpr size_t position{10};
15442 static constexpr char const * const name{"Jvm_only"};
15443 static constexpr char const * const typestr{"bool"};
15444 static constexpr bool traverse{false};
15445 static constexpr auto mbr_ptr{&SgFile::p_Jvm_only};
15446 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15447 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Jvm_only>;
15448};
15449template <> struct describe_field_t<SgFile,bool,&SgFile::p_Jovial_only> {
15450 using parent = SgFile;
15451 using field_type = bool;
15452 static constexpr size_t position{11};
15453 static constexpr char const * const name{"Jovial_only"};
15454 static constexpr char const * const typestr{"bool"};
15455 static constexpr bool traverse{false};
15456 static constexpr auto mbr_ptr{&SgFile::p_Jovial_only};
15457 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15458 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Jovial_only>;
15459};
15460template <> struct describe_field_t<SgFile,bool,&SgFile::p_PHP_only> {
15461 using parent = SgFile;
15462 using field_type = bool;
15463 static constexpr size_t position{12};
15464 static constexpr char const * const name{"PHP_only"};
15465 static constexpr char const * const typestr{"bool"};
15466 static constexpr bool traverse{false};
15467 static constexpr auto mbr_ptr{&SgFile::p_PHP_only};
15468 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15469 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_PHP_only>;
15470};
15471template <> struct describe_field_t<SgFile,bool,&SgFile::p_Python_only> {
15472 using parent = SgFile;
15473 using field_type = bool;
15474 static constexpr size_t position{13};
15475 static constexpr char const * const name{"Python_only"};
15476 static constexpr char const * const typestr{"bool"};
15477 static constexpr bool traverse{false};
15478 static constexpr auto mbr_ptr{&SgFile::p_Python_only};
15479 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15480 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Python_only>;
15481};
15482template <> struct describe_field_t<SgFile,bool,&SgFile::p_Cuda_only> {
15483 using parent = SgFile;
15484 using field_type = bool;
15485 static constexpr size_t position{14};
15486 static constexpr char const * const name{"Cuda_only"};
15487 static constexpr char const * const typestr{"bool"};
15488 static constexpr bool traverse{false};
15489 static constexpr auto mbr_ptr{&SgFile::p_Cuda_only};
15490 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15491 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Cuda_only>;
15492};
15493template <> struct describe_field_t<SgFile,bool,&SgFile::p_OpenCL_only> {
15494 using parent = SgFile;
15495 using field_type = bool;
15496 static constexpr size_t position{15};
15497 static constexpr char const * const name{"OpenCL_only"};
15498 static constexpr char const * const typestr{"bool"};
15499 static constexpr bool traverse{false};
15500 static constexpr auto mbr_ptr{&SgFile::p_OpenCL_only};
15501 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15502 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_OpenCL_only>;
15503};
15504template <> struct describe_field_t<SgFile,bool,&SgFile::p_Csharp_only> {
15505 using parent = SgFile;
15506 using field_type = bool;
15507 static constexpr size_t position{16};
15508 static constexpr char const * const name{"Csharp_only"};
15509 static constexpr char const * const typestr{"bool"};
15510 static constexpr bool traverse{false};
15511 static constexpr auto mbr_ptr{&SgFile::p_Csharp_only};
15512 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15513 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Csharp_only>;
15514};
15515template <> struct describe_field_t<SgFile,bool,&SgFile::p_Ada_only> {
15516 using parent = SgFile;
15517 using field_type = bool;
15518 static constexpr size_t position{17};
15519 static constexpr char const * const name{"Ada_only"};
15520 static constexpr char const * const typestr{"bool"};
15521 static constexpr bool traverse{false};
15522 static constexpr auto mbr_ptr{&SgFile::p_Ada_only};
15523 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15524 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_Ada_only>;
15525};
15526template <> struct describe_field_t<SgFile,bool,&SgFile::p_requires_C_preprocessor> {
15527 using parent = SgFile;
15528 using field_type = bool;
15529 static constexpr size_t position{18};
15530 static constexpr char const * const name{"requires_C_preprocessor"};
15531 static constexpr char const * const typestr{"bool"};
15532 static constexpr bool traverse{false};
15533 static constexpr auto mbr_ptr{&SgFile::p_requires_C_preprocessor};
15534 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15535 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_requires_C_preprocessor>;
15536};
15537template <> struct describe_field_t<SgFile,bool,&SgFile::p_binary_only> {
15538 using parent = SgFile;
15539 using field_type = bool;
15540 static constexpr size_t position{19};
15541 static constexpr char const * const name{"binary_only"};
15542 static constexpr char const * const typestr{"bool"};
15543 static constexpr bool traverse{false};
15544 static constexpr auto mbr_ptr{&SgFile::p_binary_only};
15545 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15546 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_binary_only>;
15547};
15548template <> struct describe_field_t<SgFile,SgFile::outputFormatOption_enum,&SgFile::p_inputFormat> {
15549 using parent = SgFile;
15551 static constexpr size_t position{20};
15552 static constexpr char const * const name{"inputFormat"};
15553 static constexpr char const * const typestr{"SgFile::outputFormatOption_enum"};
15554 static constexpr bool traverse{false};
15555 static constexpr auto mbr_ptr{&SgFile::p_inputFormat};
15556 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15557 using bind = Desc<SgFile, SgFile::outputFormatOption_enum SgFile::*, &SgFile::p_inputFormat>;
15558};
15559template <> struct describe_field_t<SgFile,SgFile::outputFormatOption_enum,&SgFile::p_outputFormat> {
15560 using parent = SgFile;
15562 static constexpr size_t position{21};
15563 static constexpr char const * const name{"outputFormat"};
15564 static constexpr char const * const typestr{"SgFile::outputFormatOption_enum"};
15565 static constexpr bool traverse{false};
15566 static constexpr auto mbr_ptr{&SgFile::p_outputFormat};
15567 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15568 using bind = Desc<SgFile, SgFile::outputFormatOption_enum SgFile::*, &SgFile::p_outputFormat>;
15569};
15570template <> struct describe_field_t<SgFile,SgFile::outputFormatOption_enum,&SgFile::p_backendCompileFormat> {
15571 using parent = SgFile;
15573 static constexpr size_t position{22};
15574 static constexpr char const * const name{"backendCompileFormat"};
15575 static constexpr char const * const typestr{"SgFile::outputFormatOption_enum"};
15576 static constexpr bool traverse{false};
15577 static constexpr auto mbr_ptr{&SgFile::p_backendCompileFormat};
15578 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15579 using bind = Desc<SgFile, SgFile::outputFormatOption_enum SgFile::*, &SgFile::p_backendCompileFormat>;
15580};
15581template <> struct describe_field_t<SgFile,bool,&SgFile::p_fortran_implicit_none> {
15582 using parent = SgFile;
15583 using field_type = bool;
15584 static constexpr size_t position{23};
15585 static constexpr char const * const name{"fortran_implicit_none"};
15586 static constexpr char const * const typestr{"bool"};
15587 static constexpr bool traverse{false};
15588 static constexpr auto mbr_ptr{&SgFile::p_fortran_implicit_none};
15589 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15590 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_fortran_implicit_none>;
15591};
15592template <> struct describe_field_t<SgFile,bool,&SgFile::p_openmp> {
15593 using parent = SgFile;
15594 using field_type = bool;
15595 static constexpr size_t position{24};
15596 static constexpr char const * const name{"openmp"};
15597 static constexpr char const * const typestr{"bool"};
15598 static constexpr bool traverse{false};
15599 static constexpr auto mbr_ptr{&SgFile::p_openmp};
15600 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15601 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_openmp>;
15602};
15603template <> struct describe_field_t<SgFile,bool,&SgFile::p_openmp_parse_only> {
15604 using parent = SgFile;
15605 using field_type = bool;
15606 static constexpr size_t position{25};
15607 static constexpr char const * const name{"openmp_parse_only"};
15608 static constexpr char const * const typestr{"bool"};
15609 static constexpr bool traverse{false};
15610 static constexpr auto mbr_ptr{&SgFile::p_openmp_parse_only};
15611 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15612 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_openmp_parse_only>;
15613};
15614template <> struct describe_field_t<SgFile,bool,&SgFile::p_openmp_ast_only> {
15615 using parent = SgFile;
15616 using field_type = bool;
15617 static constexpr size_t position{26};
15618 static constexpr char const * const name{"openmp_ast_only"};
15619 static constexpr char const * const typestr{"bool"};
15620 static constexpr bool traverse{false};
15621 static constexpr auto mbr_ptr{&SgFile::p_openmp_ast_only};
15622 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15623 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_openmp_ast_only>;
15624};
15625template <> struct describe_field_t<SgFile,bool,&SgFile::p_openmp_lowering> {
15626 using parent = SgFile;
15627 using field_type = bool;
15628 static constexpr size_t position{27};
15629 static constexpr char const * const name{"openmp_lowering"};
15630 static constexpr char const * const typestr{"bool"};
15631 static constexpr bool traverse{false};
15632 static constexpr auto mbr_ptr{&SgFile::p_openmp_lowering};
15633 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15634 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_openmp_lowering>;
15635};
15636template <> struct describe_field_t<SgFile,bool,&SgFile::p_openacc> {
15637 using parent = SgFile;
15638 using field_type = bool;
15639 static constexpr size_t position{28};
15640 static constexpr char const * const name{"openacc"};
15641 static constexpr char const * const typestr{"bool"};
15642 static constexpr bool traverse{false};
15643 static constexpr auto mbr_ptr{&SgFile::p_openacc};
15644 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15645 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_openacc>;
15646};
15647template <> struct describe_field_t<SgFile,bool,&SgFile::p_openacc_parse_only> {
15648 using parent = SgFile;
15649 using field_type = bool;
15650 static constexpr size_t position{29};
15651 static constexpr char const * const name{"openacc_parse_only"};
15652 static constexpr char const * const typestr{"bool"};
15653 static constexpr bool traverse{false};
15654 static constexpr auto mbr_ptr{&SgFile::p_openacc_parse_only};
15655 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15656 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_openacc_parse_only>;
15657};
15658template <> struct describe_field_t<SgFile,bool,&SgFile::p_openacc_ast_only> {
15659 using parent = SgFile;
15660 using field_type = bool;
15661 static constexpr size_t position{30};
15662 static constexpr char const * const name{"openacc_ast_only"};
15663 static constexpr char const * const typestr{"bool"};
15664 static constexpr bool traverse{false};
15665 static constexpr auto mbr_ptr{&SgFile::p_openacc_ast_only};
15666 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15667 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_openacc_ast_only>;
15668};
15669template <> struct describe_field_t<SgFile,bool,&SgFile::p_cray_pointer_support> {
15670 using parent = SgFile;
15671 using field_type = bool;
15672 static constexpr size_t position{31};
15673 static constexpr char const * const name{"cray_pointer_support"};
15674 static constexpr char const * const typestr{"bool"};
15675 static constexpr bool traverse{false};
15676 static constexpr auto mbr_ptr{&SgFile::p_cray_pointer_support};
15677 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15678 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_cray_pointer_support>;
15679};
15680template <> struct describe_field_t<SgFile,bool,&SgFile::p_failsafe> {
15681 using parent = SgFile;
15682 using field_type = bool;
15683 static constexpr size_t position{32};
15684 static constexpr char const * const name{"failsafe"};
15685 static constexpr char const * const typestr{"bool"};
15686 static constexpr bool traverse{false};
15687 static constexpr auto mbr_ptr{&SgFile::p_failsafe};
15688 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15689 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_failsafe>;
15690};
15691template <> struct describe_field_t<SgFile,bool,&SgFile::p_output_parser_actions> {
15692 using parent = SgFile;
15693 using field_type = bool;
15694 static constexpr size_t position{33};
15695 static constexpr char const * const name{"output_parser_actions"};
15696 static constexpr char const * const typestr{"bool"};
15697 static constexpr bool traverse{false};
15698 static constexpr auto mbr_ptr{&SgFile::p_output_parser_actions};
15699 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15700 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_output_parser_actions>;
15701};
15702template <> struct describe_field_t<SgFile,bool,&SgFile::p_exit_after_parser> {
15703 using parent = SgFile;
15704 using field_type = bool;
15705 static constexpr size_t position{34};
15706 static constexpr char const * const name{"exit_after_parser"};
15707 static constexpr char const * const typestr{"bool"};
15708 static constexpr bool traverse{false};
15709 static constexpr auto mbr_ptr{&SgFile::p_exit_after_parser};
15710 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15711 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_exit_after_parser>;
15712};
15713template <> struct describe_field_t<SgFile,bool,&SgFile::p_skip_syntax_check> {
15714 using parent = SgFile;
15715 using field_type = bool;
15716 static constexpr size_t position{35};
15717 static constexpr char const * const name{"skip_syntax_check"};
15718 static constexpr char const * const typestr{"bool"};
15719 static constexpr bool traverse{false};
15720 static constexpr auto mbr_ptr{&SgFile::p_skip_syntax_check};
15721 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15722 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skip_syntax_check>;
15723};
15724template <> struct describe_field_t<SgFile,bool,&SgFile::p_skip_parser> {
15725 using parent = SgFile;
15726 using field_type = bool;
15727 static constexpr size_t position{36};
15728 static constexpr char const * const name{"skip_parser"};
15729 static constexpr char const * const typestr{"bool"};
15730 static constexpr bool traverse{false};
15731 static constexpr auto mbr_ptr{&SgFile::p_skip_parser};
15732 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15733 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skip_parser>;
15734};
15735template <> struct describe_field_t<SgFile,bool,&SgFile::p_relax_syntax_check> {
15736 using parent = SgFile;
15737 using field_type = bool;
15738 static constexpr size_t position{37};
15739 static constexpr char const * const name{"relax_syntax_check"};
15740 static constexpr char const * const typestr{"bool"};
15741 static constexpr bool traverse{false};
15742 static constexpr auto mbr_ptr{&SgFile::p_relax_syntax_check};
15743 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15744 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_relax_syntax_check>;
15745};
15746template <> struct describe_field_t<SgFile,bool,&SgFile::p_skip_translation_from_edg_ast_to_rose_ast> {
15747 using parent = SgFile;
15748 using field_type = bool;
15749 static constexpr size_t position{38};
15750 static constexpr char const * const name{"skip_translation_from_edg_ast_to_rose_ast"};
15751 static constexpr char const * const typestr{"bool"};
15752 static constexpr bool traverse{false};
15753 static constexpr auto mbr_ptr{&SgFile::p_skip_translation_from_edg_ast_to_rose_ast};
15754 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15755 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skip_translation_from_edg_ast_to_rose_ast>;
15756};
15757template <> struct describe_field_t<SgFile,bool,&SgFile::p_skip_transformation> {
15758 using parent = SgFile;
15759 using field_type = bool;
15760 static constexpr size_t position{39};
15761 static constexpr char const * const name{"skip_transformation"};
15762 static constexpr char const * const typestr{"bool"};
15763 static constexpr bool traverse{false};
15764 static constexpr auto mbr_ptr{&SgFile::p_skip_transformation};
15765 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15766 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skip_transformation>;
15767};
15768template <> struct describe_field_t<SgFile,bool,&SgFile::p_skip_unparse> {
15769 using parent = SgFile;
15770 using field_type = bool;
15771 static constexpr size_t position{40};
15772 static constexpr char const * const name{"skip_unparse"};
15773 static constexpr char const * const typestr{"bool"};
15774 static constexpr bool traverse{false};
15775 static constexpr auto mbr_ptr{&SgFile::p_skip_unparse};
15776 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15777 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skip_unparse>;
15778};
15779template <> struct describe_field_t<SgFile,bool,&SgFile::p_skipfinalCompileStep> {
15780 using parent = SgFile;
15781 using field_type = bool;
15782 static constexpr size_t position{41};
15783 static constexpr char const * const name{"skipfinalCompileStep"};
15784 static constexpr char const * const typestr{"bool"};
15785 static constexpr bool traverse{false};
15786 static constexpr auto mbr_ptr{&SgFile::p_skipfinalCompileStep};
15787 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15788 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skipfinalCompileStep>;
15789};
15790template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_includes> {
15791 using parent = SgFile;
15792 using field_type = bool;
15793 static constexpr size_t position{42};
15794 static constexpr char const * const name{"unparse_includes"};
15795 static constexpr char const * const typestr{"bool"};
15796 static constexpr bool traverse{false};
15797 static constexpr auto mbr_ptr{&SgFile::p_unparse_includes};
15798 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15799 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_includes>;
15800};
15801template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_line_directives> {
15802 using parent = SgFile;
15803 using field_type = bool;
15804 static constexpr size_t position{43};
15805 static constexpr char const * const name{"unparse_line_directives"};
15806 static constexpr char const * const typestr{"bool"};
15807 static constexpr bool traverse{false};
15808 static constexpr auto mbr_ptr{&SgFile::p_unparse_line_directives};
15809 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15810 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_line_directives>;
15811};
15812template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_function_calls_using_operator_syntax> {
15813 using parent = SgFile;
15814 using field_type = bool;
15815 static constexpr size_t position{44};
15816 static constexpr char const * const name{"unparse_function_calls_using_operator_syntax"};
15817 static constexpr char const * const typestr{"bool"};
15818 static constexpr bool traverse{false};
15819 static constexpr auto mbr_ptr{&SgFile::p_unparse_function_calls_using_operator_syntax};
15820 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15821 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_function_calls_using_operator_syntax>;
15822};
15823template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_function_calls_using_operator_names> {
15824 using parent = SgFile;
15825 using field_type = bool;
15826 static constexpr size_t position{45};
15827 static constexpr char const * const name{"unparse_function_calls_using_operator_names"};
15828 static constexpr char const * const typestr{"bool"};
15829 static constexpr bool traverse{false};
15830 static constexpr auto mbr_ptr{&SgFile::p_unparse_function_calls_using_operator_names};
15831 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15832 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_function_calls_using_operator_names>;
15833};
15834template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_instruction_addresses> {
15835 using parent = SgFile;
15836 using field_type = bool;
15837 static constexpr size_t position{46};
15838 static constexpr char const * const name{"unparse_instruction_addresses"};
15839 static constexpr char const * const typestr{"bool"};
15840 static constexpr bool traverse{false};
15841 static constexpr auto mbr_ptr{&SgFile::p_unparse_instruction_addresses};
15842 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15843 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_instruction_addresses>;
15844};
15845template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_raw_memory_contents> {
15846 using parent = SgFile;
15847 using field_type = bool;
15848 static constexpr size_t position{47};
15849 static constexpr char const * const name{"unparse_raw_memory_contents"};
15850 static constexpr char const * const typestr{"bool"};
15851 static constexpr bool traverse{false};
15852 static constexpr auto mbr_ptr{&SgFile::p_unparse_raw_memory_contents};
15853 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15854 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_raw_memory_contents>;
15855};
15856template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_binary_file_format> {
15857 using parent = SgFile;
15858 using field_type = bool;
15859 static constexpr size_t position{48};
15860 static constexpr char const * const name{"unparse_binary_file_format"};
15861 static constexpr char const * const typestr{"bool"};
15862 static constexpr bool traverse{false};
15863 static constexpr auto mbr_ptr{&SgFile::p_unparse_binary_file_format};
15864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15865 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_binary_file_format>;
15866};
15867template <> struct describe_field_t<SgFile,SgFile::languageOption_enum,&SgFile::p_outputLanguage> {
15868 using parent = SgFile;
15870 static constexpr size_t position{49};
15871 static constexpr char const * const name{"outputLanguage"};
15872 static constexpr char const * const typestr{"SgFile::languageOption_enum"};
15873 static constexpr bool traverse{false};
15874 static constexpr auto mbr_ptr{&SgFile::p_outputLanguage};
15875 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15876 using bind = Desc<SgFile, SgFile::languageOption_enum SgFile::*, &SgFile::p_outputLanguage>;
15877};
15878template <> struct describe_field_t<SgFile,SgFile::languageOption_enum,&SgFile::p_inputLanguage> {
15879 using parent = SgFile;
15881 static constexpr size_t position{50};
15882 static constexpr char const * const name{"inputLanguage"};
15883 static constexpr char const * const typestr{"SgFile::languageOption_enum"};
15884 static constexpr bool traverse{false};
15885 static constexpr auto mbr_ptr{&SgFile::p_inputLanguage};
15886 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15887 using bind = Desc<SgFile, SgFile::languageOption_enum SgFile::*, &SgFile::p_inputLanguage>;
15888};
15889template <> struct describe_field_t<SgFile,std::string,&SgFile::p_sourceFileNameWithPath> {
15890 using parent = SgFile;
15891 using field_type = std::string;
15892 static constexpr size_t position{51};
15893 static constexpr char const * const name{"sourceFileNameWithPath"};
15894 static constexpr char const * const typestr{"std::string"};
15895 static constexpr bool traverse{false};
15896 static constexpr auto mbr_ptr{&SgFile::p_sourceFileNameWithPath};
15897 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15898 using bind = Desc<SgFile, std::string SgFile::*, &SgFile::p_sourceFileNameWithPath>;
15899};
15900template <> struct describe_field_t<SgFile,std::string,&SgFile::p_sourceFileNameWithoutPath> {
15901 using parent = SgFile;
15902 using field_type = std::string;
15903 static constexpr size_t position{52};
15904 static constexpr char const * const name{"sourceFileNameWithoutPath"};
15905 static constexpr char const * const typestr{"std::string"};
15906 static constexpr bool traverse{false};
15907 static constexpr auto mbr_ptr{&SgFile::p_sourceFileNameWithoutPath};
15908 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15909 using bind = Desc<SgFile, std::string SgFile::*, &SgFile::p_sourceFileNameWithoutPath>;
15910};
15911template <> struct describe_field_t<SgFile,std::string,&SgFile::p_unparse_output_filename> {
15912 using parent = SgFile;
15913 using field_type = std::string;
15914 static constexpr size_t position{53};
15915 static constexpr char const * const name{"unparse_output_filename"};
15916 static constexpr char const * const typestr{"std::string"};
15917 static constexpr bool traverse{false};
15918 static constexpr auto mbr_ptr{&SgFile::p_unparse_output_filename};
15919 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15920 using bind = Desc<SgFile, std::string SgFile::*, &SgFile::p_unparse_output_filename>;
15921};
15922template <> struct describe_field_t<SgFile,std::string,&SgFile::p_objectFileNameWithPath> {
15923 using parent = SgFile;
15924 using field_type = std::string;
15925 static constexpr size_t position{54};
15926 static constexpr char const * const name{"objectFileNameWithPath"};
15927 static constexpr char const * const typestr{"std::string"};
15928 static constexpr bool traverse{false};
15929 static constexpr auto mbr_ptr{&SgFile::p_objectFileNameWithPath};
15930 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15931 using bind = Desc<SgFile, std::string SgFile::*, &SgFile::p_objectFileNameWithPath>;
15932};
15933template <> struct describe_field_t<SgFile,std::string,&SgFile::p_objectFileNameWithoutPath> {
15934 using parent = SgFile;
15935 using field_type = std::string;
15936 static constexpr size_t position{55};
15937 static constexpr char const * const name{"objectFileNameWithoutPath"};
15938 static constexpr char const * const typestr{"std::string"};
15939 static constexpr bool traverse{false};
15940 static constexpr auto mbr_ptr{&SgFile::p_objectFileNameWithoutPath};
15941 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15942 using bind = Desc<SgFile, std::string SgFile::*, &SgFile::p_objectFileNameWithoutPath>;
15943};
15944template <> struct describe_field_t<SgFile,bool,&SgFile::p_useBackendOnly> {
15945 using parent = SgFile;
15946 using field_type = bool;
15947 static constexpr size_t position{56};
15948 static constexpr char const * const name{"useBackendOnly"};
15949 static constexpr char const * const typestr{"bool"};
15950 static constexpr bool traverse{false};
15951 static constexpr auto mbr_ptr{&SgFile::p_useBackendOnly};
15952 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15953 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_useBackendOnly>;
15954};
15955template <> struct describe_field_t<SgFile,bool,&SgFile::p_compileOnly> {
15956 using parent = SgFile;
15957 using field_type = bool;
15958 static constexpr size_t position{57};
15959 static constexpr char const * const name{"compileOnly"};
15960 static constexpr char const * const typestr{"bool"};
15961 static constexpr bool traverse{false};
15962 static constexpr auto mbr_ptr{&SgFile::p_compileOnly};
15963 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15964 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_compileOnly>;
15965};
15966template <> struct describe_field_t<SgFile,std::string,&SgFile::p_savedFrontendCommandLine> {
15967 using parent = SgFile;
15968 using field_type = std::string;
15969 static constexpr size_t position{58};
15970 static constexpr char const * const name{"savedFrontendCommandLine"};
15971 static constexpr char const * const typestr{"std::string"};
15972 static constexpr bool traverse{false};
15973 static constexpr auto mbr_ptr{&SgFile::p_savedFrontendCommandLine};
15974 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15975 using bind = Desc<SgFile, std::string SgFile::*, &SgFile::p_savedFrontendCommandLine>;
15976};
15978 using parent = SgFile;
15979 using field_type = bool;
15980 static constexpr size_t position{59};
15981 static constexpr char const * const name{"no_implicit_templates"};
15982 static constexpr char const * const typestr{"bool"};
15983 static constexpr bool traverse{false};
15984 static constexpr auto mbr_ptr{&SgFile::p_no_implicit_templates};
15985 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15986 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_no_implicit_templates>;
15987};
15989 using parent = SgFile;
15990 using field_type = bool;
15991 static constexpr size_t position{60};
15992 static constexpr char const * const name{"no_implicit_inline_templates"};
15993 static constexpr char const * const typestr{"bool"};
15994 static constexpr bool traverse{false};
15995 static constexpr auto mbr_ptr{&SgFile::p_no_implicit_inline_templates};
15996 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
15997 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_no_implicit_inline_templates>;
15998};
15999template <> struct describe_field_t<SgFile,bool,&SgFile::p_skip_commentsAndDirectives> {
16000 using parent = SgFile;
16001 using field_type = bool;
16002 static constexpr size_t position{61};
16003 static constexpr char const * const name{"skip_commentsAndDirectives"};
16004 static constexpr char const * const typestr{"bool"};
16005 static constexpr bool traverse{false};
16006 static constexpr auto mbr_ptr{&SgFile::p_skip_commentsAndDirectives};
16007 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16008 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skip_commentsAndDirectives>;
16009};
16010template <> struct describe_field_t<SgFile,bool,&SgFile::p_collectAllCommentsAndDirectives> {
16011 using parent = SgFile;
16012 using field_type = bool;
16013 static constexpr size_t position{62};
16014 static constexpr char const * const name{"collectAllCommentsAndDirectives"};
16015 static constexpr char const * const typestr{"bool"};
16016 static constexpr bool traverse{false};
16017 static constexpr auto mbr_ptr{&SgFile::p_collectAllCommentsAndDirectives};
16018 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16019 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_collectAllCommentsAndDirectives>;
16020};
16021template <> struct describe_field_t<SgFile,bool,&SgFile::p_translateCommentsAndDirectivesIntoAST> {
16022 using parent = SgFile;
16023 using field_type = bool;
16024 static constexpr size_t position{63};
16025 static constexpr char const * const name{"translateCommentsAndDirectivesIntoAST"};
16026 static constexpr char const * const typestr{"bool"};
16027 static constexpr bool traverse{false};
16028 static constexpr auto mbr_ptr{&SgFile::p_translateCommentsAndDirectivesIntoAST};
16029 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16030 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_translateCommentsAndDirectivesIntoAST>;
16031};
16032template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparseHeaderFiles> {
16033 using parent = SgFile;
16034 using field_type = bool;
16035 static constexpr size_t position{64};
16036 static constexpr char const * const name{"unparseHeaderFiles"};
16037 static constexpr char const * const typestr{"bool"};
16038 static constexpr bool traverse{false};
16039 static constexpr auto mbr_ptr{&SgFile::p_unparseHeaderFiles};
16040 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16041 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparseHeaderFiles>;
16042};
16044 using parent = SgFile;
16046 static constexpr size_t position{65};
16047 static constexpr char const * const name{"preprocessorDirectivesAndCommentsList"};
16048 static constexpr char const * const typestr{"ROSEAttributesListContainerPtr"};
16049 static constexpr bool traverse{false};
16050 static constexpr auto mbr_ptr{&SgFile::p_preprocessorDirectivesAndCommentsList};
16051 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16052 using bind = Desc<SgFile, ROSEAttributesListContainerPtr SgFile::*, &SgFile::p_preprocessorDirectivesAndCommentsList>;
16053};
16054template <> struct describe_field_t<SgFile,AstAttributeMechanism*,&SgFile::p_attributeMechanism> {
16055 using parent = SgFile;
16057 static constexpr size_t position{66};
16058 static constexpr char const * const name{"attributeMechanism"};
16059 static constexpr char const * const typestr{"AstAttributeMechanism*"};
16060 static constexpr bool traverse{false};
16061 static constexpr auto mbr_ptr{&SgFile::p_attributeMechanism};
16062 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16063 using bind = Desc<SgFile, AstAttributeMechanism* SgFile::*, &SgFile::p_attributeMechanism>;
16064};
16065template <> struct describe_field_t<SgFile,bool,&SgFile::p_KCC_frontend> {
16066 using parent = SgFile;
16067 using field_type = bool;
16068 static constexpr size_t position{67};
16069 static constexpr char const * const name{"KCC_frontend"};
16070 static constexpr char const * const typestr{"bool"};
16071 static constexpr bool traverse{false};
16072 static constexpr auto mbr_ptr{&SgFile::p_KCC_frontend};
16073 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16074 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_KCC_frontend>;
16075};
16076template <> struct describe_field_t<SgFile,bool,&SgFile::p_new_frontend> {
16077 using parent = SgFile;
16078 using field_type = bool;
16079 static constexpr size_t position{68};
16080 static constexpr char const * const name{"new_frontend"};
16081 static constexpr char const * const typestr{"bool"};
16082 static constexpr bool traverse{false};
16083 static constexpr auto mbr_ptr{&SgFile::p_new_frontend};
16084 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16085 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_new_frontend>;
16086};
16087template <> struct describe_field_t<SgFile,bool,&SgFile::p_disable_edg_backend> {
16088 using parent = SgFile;
16089 using field_type = bool;
16090 static constexpr size_t position{69};
16091 static constexpr char const * const name{"disable_edg_backend"};
16092 static constexpr char const * const typestr{"bool"};
16093 static constexpr bool traverse{false};
16094 static constexpr auto mbr_ptr{&SgFile::p_disable_edg_backend};
16095 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16096 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_disable_edg_backend>;
16097};
16098template <> struct describe_field_t<SgFile,bool,&SgFile::p_disable_sage_backend> {
16099 using parent = SgFile;
16100 using field_type = bool;
16101 static constexpr size_t position{70};
16102 static constexpr char const * const name{"disable_sage_backend"};
16103 static constexpr char const * const typestr{"bool"};
16104 static constexpr bool traverse{false};
16105 static constexpr auto mbr_ptr{&SgFile::p_disable_sage_backend};
16106 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16107 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_disable_sage_backend>;
16108};
16109template <> struct describe_field_t<SgFile,int,&SgFile::p_testingLevel> {
16110 using parent = SgFile;
16111 using field_type = int;
16112 static constexpr size_t position{71};
16113 static constexpr char const * const name{"testingLevel"};
16114 static constexpr char const * const typestr{"int"};
16115 static constexpr bool traverse{false};
16116 static constexpr auto mbr_ptr{&SgFile::p_testingLevel};
16117 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16118 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_testingLevel>;
16119};
16120template <> struct describe_field_t<SgFile,bool,&SgFile::p_preinit_il> {
16121 using parent = SgFile;
16122 using field_type = bool;
16123 static constexpr size_t position{72};
16124 static constexpr char const * const name{"preinit_il"};
16125 static constexpr char const * const typestr{"bool"};
16126 static constexpr bool traverse{false};
16127 static constexpr auto mbr_ptr{&SgFile::p_preinit_il};
16128 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16129 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_preinit_il>;
16130};
16131template <> struct describe_field_t<SgFile,bool,&SgFile::p_enable_cp_backend> {
16132 using parent = SgFile;
16133 using field_type = bool;
16134 static constexpr size_t position{73};
16135 static constexpr char const * const name{"enable_cp_backend"};
16136 static constexpr char const * const typestr{"bool"};
16137 static constexpr bool traverse{false};
16138 static constexpr auto mbr_ptr{&SgFile::p_enable_cp_backend};
16139 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16140 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_enable_cp_backend>;
16141};
16142template <> struct describe_field_t<SgFile,bool,&SgFile::p_markGeneratedFiles> {
16143 using parent = SgFile;
16144 using field_type = bool;
16145 static constexpr size_t position{74};
16146 static constexpr char const * const name{"markGeneratedFiles"};
16147 static constexpr char const * const typestr{"bool"};
16148 static constexpr bool traverse{false};
16149 static constexpr auto mbr_ptr{&SgFile::p_markGeneratedFiles};
16150 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16151 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_markGeneratedFiles>;
16152};
16153template <> struct describe_field_t<SgFile,bool,&SgFile::p_negative_test> {
16154 using parent = SgFile;
16155 using field_type = bool;
16156 static constexpr size_t position{75};
16157 static constexpr char const * const name{"negative_test"};
16158 static constexpr char const * const typestr{"bool"};
16159 static constexpr bool traverse{false};
16160 static constexpr auto mbr_ptr{&SgFile::p_negative_test};
16161 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16162 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_negative_test>;
16163};
16164template <> struct describe_field_t<SgFile,bool,&SgFile::p_strict_language_handling> {
16165 using parent = SgFile;
16166 using field_type = bool;
16167 static constexpr size_t position{76};
16168 static constexpr char const * const name{"strict_language_handling"};
16169 static constexpr char const * const typestr{"bool"};
16170 static constexpr bool traverse{false};
16171 static constexpr auto mbr_ptr{&SgFile::p_strict_language_handling};
16172 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16173 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_strict_language_handling>;
16174};
16175template <> struct describe_field_t<SgFile,bool,&SgFile::p_wave> {
16176 using parent = SgFile;
16177 using field_type = bool;
16178 static constexpr size_t position{77};
16179 static constexpr char const * const name{"wave"};
16180 static constexpr char const * const typestr{"bool"};
16181 static constexpr bool traverse{false};
16182 static constexpr auto mbr_ptr{&SgFile::p_wave};
16183 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16184 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_wave>;
16185};
16186template <> struct describe_field_t<SgFile,int,&SgFile::p_embedColorCodesInGeneratedCode> {
16187 using parent = SgFile;
16188 using field_type = int;
16189 static constexpr size_t position{78};
16190 static constexpr char const * const name{"embedColorCodesInGeneratedCode"};
16191 static constexpr char const * const typestr{"int"};
16192 static constexpr bool traverse{false};
16193 static constexpr auto mbr_ptr{&SgFile::p_embedColorCodesInGeneratedCode};
16194 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16195 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_embedColorCodesInGeneratedCode>;
16196};
16197template <> struct describe_field_t<SgFile,int,&SgFile::p_generateSourcePositionCodes> {
16198 using parent = SgFile;
16199 using field_type = int;
16200 static constexpr size_t position{79};
16201 static constexpr char const * const name{"generateSourcePositionCodes"};
16202 static constexpr char const * const typestr{"int"};
16203 static constexpr bool traverse{false};
16204 static constexpr auto mbr_ptr{&SgFile::p_generateSourcePositionCodes};
16205 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16206 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_generateSourcePositionCodes>;
16207};
16208template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesCppFileExtension> {
16209 using parent = SgFile;
16210 using field_type = bool;
16211 static constexpr size_t position{80};
16212 static constexpr char const * const name{"sourceFileUsesCppFileExtension"};
16213 static constexpr char const * const typestr{"bool"};
16214 static constexpr bool traverse{false};
16215 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesCppFileExtension};
16216 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16217 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesCppFileExtension>;
16218};
16219template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortranFileExtension> {
16220 using parent = SgFile;
16221 using field_type = bool;
16222 static constexpr size_t position{81};
16223 static constexpr char const * const name{"sourceFileUsesFortranFileExtension"};
16224 static constexpr char const * const typestr{"bool"};
16225 static constexpr bool traverse{false};
16226 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesFortranFileExtension};
16227 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16228 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesFortranFileExtension>;
16229};
16230template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran77FileExtension> {
16231 using parent = SgFile;
16232 using field_type = bool;
16233 static constexpr size_t position{82};
16234 static constexpr char const * const name{"sourceFileUsesFortran77FileExtension"};
16235 static constexpr char const * const typestr{"bool"};
16236 static constexpr bool traverse{false};
16237 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesFortran77FileExtension};
16238 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16239 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesFortran77FileExtension>;
16240};
16241template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran90FileExtension> {
16242 using parent = SgFile;
16243 using field_type = bool;
16244 static constexpr size_t position{83};
16245 static constexpr char const * const name{"sourceFileUsesFortran90FileExtension"};
16246 static constexpr char const * const typestr{"bool"};
16247 static constexpr bool traverse{false};
16248 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesFortran90FileExtension};
16249 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16250 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesFortran90FileExtension>;
16251};
16252template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran95FileExtension> {
16253 using parent = SgFile;
16254 using field_type = bool;
16255 static constexpr size_t position{84};
16256 static constexpr char const * const name{"sourceFileUsesFortran95FileExtension"};
16257 static constexpr char const * const typestr{"bool"};
16258 static constexpr bool traverse{false};
16259 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesFortran95FileExtension};
16260 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16261 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesFortran95FileExtension>;
16262};
16263template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran2003FileExtension> {
16264 using parent = SgFile;
16265 using field_type = bool;
16266 static constexpr size_t position{85};
16267 static constexpr char const * const name{"sourceFileUsesFortran2003FileExtension"};
16268 static constexpr char const * const typestr{"bool"};
16269 static constexpr bool traverse{false};
16270 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesFortran2003FileExtension};
16271 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16272 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesFortran2003FileExtension>;
16273};
16274template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran2008FileExtension> {
16275 using parent = SgFile;
16276 using field_type = bool;
16277 static constexpr size_t position{86};
16278 static constexpr char const * const name{"sourceFileUsesFortran2008FileExtension"};
16279 static constexpr char const * const typestr{"bool"};
16280 static constexpr bool traverse{false};
16281 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesFortran2008FileExtension};
16282 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16283 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesFortran2008FileExtension>;
16284};
16285template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesCoArrayFortranFileExtension> {
16286 using parent = SgFile;
16287 using field_type = bool;
16288 static constexpr size_t position{87};
16289 static constexpr char const * const name{"sourceFileUsesCoArrayFortranFileExtension"};
16290 static constexpr char const * const typestr{"bool"};
16291 static constexpr bool traverse{false};
16292 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesCoArrayFortranFileExtension};
16293 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16294 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesCoArrayFortranFileExtension>;
16295};
16296template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesPHPFileExtension> {
16297 using parent = SgFile;
16298 using field_type = bool;
16299 static constexpr size_t position{88};
16300 static constexpr char const * const name{"sourceFileUsesPHPFileExtension"};
16301 static constexpr char const * const typestr{"bool"};
16302 static constexpr bool traverse{false};
16303 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesPHPFileExtension};
16304 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16305 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesPHPFileExtension>;
16306};
16307template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesPythonFileExtension> {
16308 using parent = SgFile;
16309 using field_type = bool;
16310 static constexpr size_t position{89};
16311 static constexpr char const * const name{"sourceFileUsesPythonFileExtension"};
16312 static constexpr char const * const typestr{"bool"};
16313 static constexpr bool traverse{false};
16314 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesPythonFileExtension};
16315 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16316 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesPythonFileExtension>;
16317};
16318template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesJavaFileExtension> {
16319 using parent = SgFile;
16320 using field_type = bool;
16321 static constexpr size_t position{90};
16322 static constexpr char const * const name{"sourceFileUsesJavaFileExtension"};
16323 static constexpr char const * const typestr{"bool"};
16324 static constexpr bool traverse{false};
16325 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesJavaFileExtension};
16326 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16327 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesJavaFileExtension>;
16328};
16329template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesJvmFileExtension> {
16330 using parent = SgFile;
16331 using field_type = bool;
16332 static constexpr size_t position{91};
16333 static constexpr char const * const name{"sourceFileUsesJvmFileExtension"};
16334 static constexpr char const * const typestr{"bool"};
16335 static constexpr bool traverse{false};
16336 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesJvmFileExtension};
16337 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16338 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesJvmFileExtension>;
16339};
16340template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesBinaryFileExtension> {
16341 using parent = SgFile;
16342 using field_type = bool;
16343 static constexpr size_t position{92};
16344 static constexpr char const * const name{"sourceFileUsesBinaryFileExtension"};
16345 static constexpr char const * const typestr{"bool"};
16346 static constexpr bool traverse{false};
16347 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesBinaryFileExtension};
16348 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16349 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesBinaryFileExtension>;
16350};
16351template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileTypeIsUnknown> {
16352 using parent = SgFile;
16353 using field_type = bool;
16354 static constexpr size_t position{93};
16355 static constexpr char const * const name{"sourceFileTypeIsUnknown"};
16356 static constexpr char const * const typestr{"bool"};
16357 static constexpr bool traverse{false};
16358 static constexpr auto mbr_ptr{&SgFile::p_sourceFileTypeIsUnknown};
16359 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16360 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileTypeIsUnknown>;
16361};
16362template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesCsharpFileExtension> {
16363 using parent = SgFile;
16364 using field_type = bool;
16365 static constexpr size_t position{94};
16366 static constexpr char const * const name{"sourceFileUsesCsharpFileExtension"};
16367 static constexpr char const * const typestr{"bool"};
16368 static constexpr bool traverse{false};
16369 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesCsharpFileExtension};
16370 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16371 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesCsharpFileExtension>;
16372};
16373template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesAdaFileExtension> {
16374 using parent = SgFile;
16375 using field_type = bool;
16376 static constexpr size_t position{95};
16377 static constexpr char const * const name{"sourceFileUsesAdaFileExtension"};
16378 static constexpr char const * const typestr{"bool"};
16379 static constexpr bool traverse{false};
16380 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesAdaFileExtension};
16381 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16382 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesAdaFileExtension>;
16383};
16384template <> struct describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesJovialFileExtension> {
16385 using parent = SgFile;
16386 using field_type = bool;
16387 static constexpr size_t position{96};
16388 static constexpr char const * const name{"sourceFileUsesJovialFileExtension"};
16389 static constexpr char const * const typestr{"bool"};
16390 static constexpr bool traverse{false};
16391 static constexpr auto mbr_ptr{&SgFile::p_sourceFileUsesJovialFileExtension};
16392 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16393 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_sourceFileUsesJovialFileExtension>;
16394};
16395template <> struct describe_field_t<SgFile,int,&SgFile::p_detect_dangling_pointers> {
16396 using parent = SgFile;
16397 using field_type = int;
16398 static constexpr size_t position{97};
16399 static constexpr char const * const name{"detect_dangling_pointers"};
16400 static constexpr char const * const typestr{"int"};
16401 static constexpr bool traverse{false};
16402 static constexpr auto mbr_ptr{&SgFile::p_detect_dangling_pointers};
16403 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16404 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_detect_dangling_pointers>;
16405};
16406template <> struct describe_field_t<SgFile,bool,&SgFile::p_experimental_flang_frontend> {
16407 using parent = SgFile;
16408 using field_type = bool;
16409 static constexpr size_t position{98};
16410 static constexpr char const * const name{"experimental_flang_frontend"};
16411 static constexpr char const * const typestr{"bool"};
16412 static constexpr bool traverse{false};
16413 static constexpr auto mbr_ptr{&SgFile::p_experimental_flang_frontend};
16414 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16415 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_experimental_flang_frontend>;
16416};
16417template <> struct describe_field_t<SgFile,bool,&SgFile::p_read_executable_file_format_only> {
16418 using parent = SgFile;
16419 using field_type = bool;
16420 static constexpr size_t position{99};
16421 static constexpr char const * const name{"read_executable_file_format_only"};
16422 static constexpr char const * const typestr{"bool"};
16423 static constexpr bool traverse{false};
16424 static constexpr auto mbr_ptr{&SgFile::p_read_executable_file_format_only};
16425 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16426 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_read_executable_file_format_only>;
16427};
16428template <> struct describe_field_t<SgFile,bool,&SgFile::p_visualize_executable_file_format_skip_symbols> {
16429 using parent = SgFile;
16430 using field_type = bool;
16431 static constexpr size_t position{100};
16432 static constexpr char const * const name{"visualize_executable_file_format_skip_symbols"};
16433 static constexpr char const * const typestr{"bool"};
16434 static constexpr bool traverse{false};
16435 static constexpr auto mbr_ptr{&SgFile::p_visualize_executable_file_format_skip_symbols};
16436 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16437 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_visualize_executable_file_format_skip_symbols>;
16438};
16439template <> struct describe_field_t<SgFile,bool,&SgFile::p_visualize_dwarf_only> {
16440 using parent = SgFile;
16441 using field_type = bool;
16442 static constexpr size_t position{101};
16443 static constexpr char const * const name{"visualize_dwarf_only"};
16444 static constexpr char const * const typestr{"bool"};
16445 static constexpr bool traverse{false};
16446 static constexpr auto mbr_ptr{&SgFile::p_visualize_dwarf_only};
16447 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16448 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_visualize_dwarf_only>;
16449};
16450template <> struct describe_field_t<SgFile,bool,&SgFile::p_read_instructions_only> {
16451 using parent = SgFile;
16452 using field_type = bool;
16453 static constexpr size_t position{102};
16454 static constexpr char const * const name{"read_instructions_only"};
16455 static constexpr char const * const typestr{"bool"};
16456 static constexpr bool traverse{false};
16457 static constexpr auto mbr_ptr{&SgFile::p_read_instructions_only};
16458 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16459 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_read_instructions_only>;
16460};
16461template <> struct describe_field_t<SgFile,SgStringList,&SgFile::p_libraryArchiveObjectFileNameList> {
16462 using parent = SgFile;
16463 using field_type = SgStringList;
16464 static constexpr size_t position{103};
16465 static constexpr char const * const name{"libraryArchiveObjectFileNameList"};
16466 static constexpr char const * const typestr{"SgStringList"};
16467 static constexpr bool traverse{false};
16468 static constexpr auto mbr_ptr{&SgFile::p_libraryArchiveObjectFileNameList};
16469 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16470 using bind = Desc<SgFile, SgStringList SgFile::*, &SgFile::p_libraryArchiveObjectFileNameList>;
16471};
16472template <> struct describe_field_t<SgFile,bool,&SgFile::p_isLibraryArchive> {
16473 using parent = SgFile;
16474 using field_type = bool;
16475 static constexpr size_t position{104};
16476 static constexpr char const * const name{"isLibraryArchive"};
16477 static constexpr char const * const typestr{"bool"};
16478 static constexpr bool traverse{false};
16479 static constexpr auto mbr_ptr{&SgFile::p_isLibraryArchive};
16480 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16481 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_isLibraryArchive>;
16482};
16483template <> struct describe_field_t<SgFile,bool,&SgFile::p_isObjectFile> {
16484 using parent = SgFile;
16485 using field_type = bool;
16486 static constexpr size_t position{105};
16487 static constexpr char const * const name{"isObjectFile"};
16488 static constexpr char const * const typestr{"bool"};
16489 static constexpr bool traverse{false};
16490 static constexpr auto mbr_ptr{&SgFile::p_isObjectFile};
16491 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16492 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_isObjectFile>;
16493};
16494template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_tokens> {
16495 using parent = SgFile;
16496 using field_type = bool;
16497 static constexpr size_t position{106};
16498 static constexpr char const * const name{"unparse_tokens"};
16499 static constexpr char const * const typestr{"bool"};
16500 static constexpr bool traverse{false};
16501 static constexpr auto mbr_ptr{&SgFile::p_unparse_tokens};
16502 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16503 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_tokens>;
16504};
16505template <> struct describe_field_t<SgFile,int,&SgFile::p_unparse_tokens_testing> {
16506 using parent = SgFile;
16507 using field_type = int;
16508 static constexpr size_t position{107};
16509 static constexpr char const * const name{"unparse_tokens_testing"};
16510 static constexpr char const * const typestr{"int"};
16511 static constexpr bool traverse{false};
16512 static constexpr auto mbr_ptr{&SgFile::p_unparse_tokens_testing};
16513 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16514 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_unparse_tokens_testing>;
16515};
16516template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_using_leading_and_trailing_token_mappings> {
16517 using parent = SgFile;
16518 using field_type = bool;
16519 static constexpr size_t position{108};
16520 static constexpr char const * const name{"unparse_using_leading_and_trailing_token_mappings"};
16521 static constexpr char const * const typestr{"bool"};
16522 static constexpr bool traverse{false};
16523 static constexpr auto mbr_ptr{&SgFile::p_unparse_using_leading_and_trailing_token_mappings};
16524 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16525 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_using_leading_and_trailing_token_mappings>;
16526};
16527template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_template_ast> {
16528 using parent = SgFile;
16529 using field_type = bool;
16530 static constexpr size_t position{109};
16531 static constexpr char const * const name{"unparse_template_ast"};
16532 static constexpr char const * const typestr{"bool"};
16533 static constexpr bool traverse{false};
16534 static constexpr auto mbr_ptr{&SgFile::p_unparse_template_ast};
16535 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16536 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_template_ast>;
16537};
16538template <> struct describe_field_t<SgFile,bool,&SgFile::p_skipAstConsistancyTests> {
16539 using parent = SgFile;
16540 using field_type = bool;
16541 static constexpr size_t position{110};
16542 static constexpr char const * const name{"skipAstConsistancyTests"};
16543 static constexpr char const * const typestr{"bool"};
16544 static constexpr bool traverse{false};
16545 static constexpr auto mbr_ptr{&SgFile::p_skipAstConsistancyTests};
16546 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16547 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_skipAstConsistancyTests>;
16548};
16549template <> struct describe_field_t<SgFile,bool,&SgFile::p_multifile_support> {
16550 using parent = SgFile;
16551 using field_type = bool;
16552 static constexpr size_t position{111};
16553 static constexpr char const * const name{"multifile_support"};
16554 static constexpr char const * const typestr{"bool"};
16555 static constexpr bool traverse{false};
16556 static constexpr auto mbr_ptr{&SgFile::p_multifile_support};
16557 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16558 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_multifile_support>;
16559};
16560template <> struct describe_field_t<SgFile,bool,&SgFile::p_optimization> {
16561 using parent = SgFile;
16562 using field_type = bool;
16563 static constexpr size_t position{112};
16564 static constexpr char const * const name{"optimization"};
16565 static constexpr char const * const typestr{"bool"};
16566 static constexpr bool traverse{false};
16567 static constexpr auto mbr_ptr{&SgFile::p_optimization};
16568 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16569 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_optimization>;
16570};
16571template <> struct describe_field_t<SgFile,bool,&SgFile::p_use_token_stream_to_improve_source_position_info> {
16572 using parent = SgFile;
16573 using field_type = bool;
16574 static constexpr size_t position{113};
16575 static constexpr char const * const name{"use_token_stream_to_improve_source_position_info"};
16576 static constexpr char const * const typestr{"bool"};
16577 static constexpr bool traverse{false};
16578 static constexpr auto mbr_ptr{&SgFile::p_use_token_stream_to_improve_source_position_info};
16579 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16580 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_use_token_stream_to_improve_source_position_info>;
16581};
16582template <> struct describe_field_t<SgFile,bool,&SgFile::p_suppress_variable_declaration_normalization> {
16583 using parent = SgFile;
16584 using field_type = bool;
16585 static constexpr size_t position{114};
16586 static constexpr char const * const name{"suppress_variable_declaration_normalization"};
16587 static constexpr char const * const typestr{"bool"};
16588 static constexpr bool traverse{false};
16589 static constexpr auto mbr_ptr{&SgFile::p_suppress_variable_declaration_normalization};
16590 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16591 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_suppress_variable_declaration_normalization>;
16592};
16593template <> struct describe_field_t<SgFile,bool,&SgFile::p_edg_il_to_graphviz> {
16594 using parent = SgFile;
16595 using field_type = bool;
16596 static constexpr size_t position{115};
16597 static constexpr char const * const name{"edg_il_to_graphviz"};
16598 static constexpr char const * const typestr{"bool"};
16599 static constexpr bool traverse{false};
16600 static constexpr auto mbr_ptr{&SgFile::p_edg_il_to_graphviz};
16601 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16602 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_edg_il_to_graphviz>;
16603};
16604template <> struct describe_field_t<SgFile,bool,&SgFile::p_clang_il_to_graphviz> {
16605 using parent = SgFile;
16606 using field_type = bool;
16607 static constexpr size_t position{116};
16608 static constexpr char const * const name{"clang_il_to_graphviz"};
16609 static constexpr char const * const typestr{"bool"};
16610 static constexpr bool traverse{false};
16611 static constexpr auto mbr_ptr{&SgFile::p_clang_il_to_graphviz};
16612 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16613 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_clang_il_to_graphviz>;
16614};
16615template <> struct describe_field_t<SgFile,bool,&SgFile::p_no_optimize_flag_for_frontend> {
16616 using parent = SgFile;
16617 using field_type = bool;
16618 static constexpr size_t position{117};
16619 static constexpr char const * const name{"no_optimize_flag_for_frontend"};
16620 static constexpr char const * const typestr{"bool"};
16621 static constexpr bool traverse{false};
16622 static constexpr auto mbr_ptr{&SgFile::p_no_optimize_flag_for_frontend};
16623 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16624 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_no_optimize_flag_for_frontend>;
16625};
16626template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparse_edg_normalized_method_ROSE_1392> {
16627 using parent = SgFile;
16628 using field_type = bool;
16629 static constexpr size_t position{118};
16630 static constexpr char const * const name{"unparse_edg_normalized_method_ROSE_1392"};
16631 static constexpr char const * const typestr{"bool"};
16632 static constexpr bool traverse{false};
16633 static constexpr auto mbr_ptr{&SgFile::p_unparse_edg_normalized_method_ROSE_1392};
16634 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16635 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparse_edg_normalized_method_ROSE_1392>;
16636};
16637template <> struct describe_field_t<SgFile,SgFile::standard_enum,&SgFile::p_standard> {
16638 using parent = SgFile;
16639 using field_type = SgFile::standard_enum;
16640 static constexpr size_t position{119};
16641 static constexpr char const * const name{"standard"};
16642 static constexpr char const * const typestr{"SgFile::standard_enum"};
16643 static constexpr bool traverse{false};
16644 static constexpr auto mbr_ptr{&SgFile::p_standard};
16645 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16646 using bind = Desc<SgFile, SgFile::standard_enum SgFile::*, &SgFile::p_standard>;
16647};
16648template <> struct describe_field_t<SgFile,bool,&SgFile::p_gnu_standard> {
16649 using parent = SgFile;
16650 using field_type = bool;
16651 static constexpr size_t position{120};
16652 static constexpr char const * const name{"gnu_standard"};
16653 static constexpr char const * const typestr{"bool"};
16654 static constexpr bool traverse{false};
16655 static constexpr auto mbr_ptr{&SgFile::p_gnu_standard};
16656 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16657 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_gnu_standard>;
16658};
16659template <> struct describe_field_t<SgFile,int,&SgFile::p_frontendErrorCode> {
16660 using parent = SgFile;
16661 using field_type = int;
16662 static constexpr size_t position{121};
16663 static constexpr char const * const name{"frontendErrorCode"};
16664 static constexpr char const * const typestr{"int"};
16665 static constexpr bool traverse{false};
16666 static constexpr auto mbr_ptr{&SgFile::p_frontendErrorCode};
16667 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16668 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_frontendErrorCode>;
16669};
16670template <> struct describe_field_t<SgFile,int,&SgFile::p_javacErrorCode> {
16671 using parent = SgFile;
16672 using field_type = int;
16673 static constexpr size_t position{122};
16674 static constexpr char const * const name{"javacErrorCode"};
16675 static constexpr char const * const typestr{"int"};
16676 static constexpr bool traverse{false};
16677 static constexpr auto mbr_ptr{&SgFile::p_javacErrorCode};
16678 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16679 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_javacErrorCode>;
16680};
16681template <> struct describe_field_t<SgFile,int,&SgFile::p_ecjErrorCode> {
16682 using parent = SgFile;
16683 using field_type = int;
16684 static constexpr size_t position{123};
16685 static constexpr char const * const name{"ecjErrorCode"};
16686 static constexpr char const * const typestr{"int"};
16687 static constexpr bool traverse{false};
16688 static constexpr auto mbr_ptr{&SgFile::p_ecjErrorCode};
16689 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16690 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_ecjErrorCode>;
16691};
16692template <> struct describe_field_t<SgFile,int,&SgFile::p_midendErrorCode> {
16693 using parent = SgFile;
16694 using field_type = int;
16695 static constexpr size_t position{124};
16696 static constexpr char const * const name{"midendErrorCode"};
16697 static constexpr char const * const typestr{"int"};
16698 static constexpr bool traverse{false};
16699 static constexpr auto mbr_ptr{&SgFile::p_midendErrorCode};
16700 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16701 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_midendErrorCode>;
16702};
16703template <> struct describe_field_t<SgFile,int,&SgFile::p_unparserErrorCode> {
16704 using parent = SgFile;
16705 using field_type = int;
16706 static constexpr size_t position{125};
16707 static constexpr char const * const name{"unparserErrorCode"};
16708 static constexpr char const * const typestr{"int"};
16709 static constexpr bool traverse{false};
16710 static constexpr auto mbr_ptr{&SgFile::p_unparserErrorCode};
16711 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16712 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_unparserErrorCode>;
16713};
16714template <> struct describe_field_t<SgFile,int,&SgFile::p_backendCompilerErrorCode> {
16715 using parent = SgFile;
16716 using field_type = int;
16717 static constexpr size_t position{126};
16718 static constexpr char const * const name{"backendCompilerErrorCode"};
16719 static constexpr char const * const typestr{"int"};
16720 static constexpr bool traverse{false};
16721 static constexpr auto mbr_ptr{&SgFile::p_backendCompilerErrorCode};
16722 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16723 using bind = Desc<SgFile, int SgFile::*, &SgFile::p_backendCompilerErrorCode>;
16724};
16725template <> struct describe_field_t<SgFile,bool,&SgFile::p_unparsedFileFailedCompilation> {
16726 using parent = SgFile;
16727 using field_type = bool;
16728 static constexpr size_t position{127};
16729 static constexpr char const * const name{"unparsedFileFailedCompilation"};
16730 static constexpr char const * const typestr{"bool"};
16731 static constexpr bool traverse{false};
16732 static constexpr auto mbr_ptr{&SgFile::p_unparsedFileFailedCompilation};
16733 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16734 using bind = Desc<SgFile, bool SgFile::*, &SgFile::p_unparsedFileFailedCompilation>;
16735};
16736template <> struct describe_node_t<SgFile> {
16737 using node = SgFile;
16738 using base = SgSupport;
16739 static constexpr char const * const name{"File"};
16740 static constexpr unsigned long variant{419};
16741 static constexpr bool concrete{false};
16743 using fields_t = mp::List<describe_field_t<SgFile,Sg_File_Info*,&SgFile::p_startOfConstruct>, describe_field_t<SgFile,SgStringList,&SgFile::p_originalCommandLineArgumentList>, describe_field_t<SgFile,int,&SgFile::p_verbose>, describe_field_t<SgFile,bool,&SgFile::p_output_warnings>, describe_field_t<SgFile,bool,&SgFile::p_C_only>, describe_field_t<SgFile,bool,&SgFile::p_Cxx_only>, describe_field_t<SgFile,bool,&SgFile::p_Fortran_only>, describe_field_t<SgFile,bool,&SgFile::p_CoArrayFortran_only>, describe_field_t<SgFile,int,&SgFile::p_upc_threads>, describe_field_t<SgFile,bool,&SgFile::p_Java_only>, describe_field_t<SgFile,bool,&SgFile::p_Jvm_only>, describe_field_t<SgFile,bool,&SgFile::p_Jovial_only>, describe_field_t<SgFile,bool,&SgFile::p_PHP_only>, describe_field_t<SgFile,bool,&SgFile::p_Python_only>, describe_field_t<SgFile,bool,&SgFile::p_Cuda_only>, describe_field_t<SgFile,bool,&SgFile::p_OpenCL_only>, describe_field_t<SgFile,bool,&SgFile::p_Csharp_only>, describe_field_t<SgFile,bool,&SgFile::p_Ada_only>, describe_field_t<SgFile,bool,&SgFile::p_requires_C_preprocessor>, describe_field_t<SgFile,bool,&SgFile::p_binary_only>, describe_field_t<SgFile,SgFile::outputFormatOption_enum,&SgFile::p_inputFormat>, describe_field_t<SgFile,SgFile::outputFormatOption_enum,&SgFile::p_outputFormat>, describe_field_t<SgFile,SgFile::outputFormatOption_enum,&SgFile::p_backendCompileFormat>, describe_field_t<SgFile,bool,&SgFile::p_fortran_implicit_none>, describe_field_t<SgFile,bool,&SgFile::p_openmp>, describe_field_t<SgFile,bool,&SgFile::p_openmp_parse_only>, describe_field_t<SgFile,bool,&SgFile::p_openmp_ast_only>, describe_field_t<SgFile,bool,&SgFile::p_openmp_lowering>, describe_field_t<SgFile,bool,&SgFile::p_openacc>, describe_field_t<SgFile,bool,&SgFile::p_openacc_parse_only>, describe_field_t<SgFile,bool,&SgFile::p_openacc_ast_only>, describe_field_t<SgFile,bool,&SgFile::p_cray_pointer_support>, describe_field_t<SgFile,bool,&SgFile::p_failsafe>, describe_field_t<SgFile,bool,&SgFile::p_output_parser_actions>, describe_field_t<SgFile,bool,&SgFile::p_exit_after_parser>, describe_field_t<SgFile,bool,&SgFile::p_skip_syntax_check>, describe_field_t<SgFile,bool,&SgFile::p_skip_parser>, describe_field_t<SgFile,bool,&SgFile::p_relax_syntax_check>, describe_field_t<SgFile,bool,&SgFile::p_skip_translation_from_edg_ast_to_rose_ast>, describe_field_t<SgFile,bool,&SgFile::p_skip_transformation>, describe_field_t<SgFile,bool,&SgFile::p_skip_unparse>, describe_field_t<SgFile,bool,&SgFile::p_skipfinalCompileStep>, describe_field_t<SgFile,bool,&SgFile::p_unparse_includes>, describe_field_t<SgFile,bool,&SgFile::p_unparse_line_directives>, describe_field_t<SgFile,bool,&SgFile::p_unparse_function_calls_using_operator_syntax>, describe_field_t<SgFile,bool,&SgFile::p_unparse_function_calls_using_operator_names>, describe_field_t<SgFile,bool,&SgFile::p_unparse_instruction_addresses>, describe_field_t<SgFile,bool,&SgFile::p_unparse_raw_memory_contents>, describe_field_t<SgFile,bool,&SgFile::p_unparse_binary_file_format>, describe_field_t<SgFile,SgFile::languageOption_enum,&SgFile::p_outputLanguage>, describe_field_t<SgFile,SgFile::languageOption_enum,&SgFile::p_inputLanguage>, describe_field_t<SgFile,std::string,&SgFile::p_sourceFileNameWithPath>, describe_field_t<SgFile,std::string,&SgFile::p_sourceFileNameWithoutPath>, describe_field_t<SgFile,std::string,&SgFile::p_unparse_output_filename>, describe_field_t<SgFile,std::string,&SgFile::p_objectFileNameWithPath>, describe_field_t<SgFile,std::string,&SgFile::p_objectFileNameWithoutPath>, describe_field_t<SgFile,bool,&SgFile::p_useBackendOnly>, describe_field_t<SgFile,bool,&SgFile::p_compileOnly>, describe_field_t<SgFile,std::string,&SgFile::p_savedFrontendCommandLine>, describe_field_t<SgFile,bool,&SgFile::p_no_implicit_templates>, describe_field_t<SgFile,bool,&SgFile::p_no_implicit_inline_templates>, describe_field_t<SgFile,bool,&SgFile::p_skip_commentsAndDirectives>, describe_field_t<SgFile,bool,&SgFile::p_collectAllCommentsAndDirectives>, describe_field_t<SgFile,bool,&SgFile::p_translateCommentsAndDirectivesIntoAST>, describe_field_t<SgFile,bool,&SgFile::p_unparseHeaderFiles>, describe_field_t<SgFile,ROSEAttributesListContainerPtr,&SgFile::p_preprocessorDirectivesAndCommentsList>, describe_field_t<SgFile,AstAttributeMechanism*,&SgFile::p_attributeMechanism>, describe_field_t<SgFile,bool,&SgFile::p_KCC_frontend>, describe_field_t<SgFile,bool,&SgFile::p_new_frontend>, describe_field_t<SgFile,bool,&SgFile::p_disable_edg_backend>, describe_field_t<SgFile,bool,&SgFile::p_disable_sage_backend>, describe_field_t<SgFile,int,&SgFile::p_testingLevel>, describe_field_t<SgFile,bool,&SgFile::p_preinit_il>, describe_field_t<SgFile,bool,&SgFile::p_enable_cp_backend>, describe_field_t<SgFile,bool,&SgFile::p_markGeneratedFiles>, describe_field_t<SgFile,bool,&SgFile::p_negative_test>, describe_field_t<SgFile,bool,&SgFile::p_strict_language_handling>, describe_field_t<SgFile,bool,&SgFile::p_wave>, describe_field_t<SgFile,int,&SgFile::p_embedColorCodesInGeneratedCode>, describe_field_t<SgFile,int,&SgFile::p_generateSourcePositionCodes>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesCppFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortranFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran77FileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran90FileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran95FileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran2003FileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesFortran2008FileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesCoArrayFortranFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesPHPFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesPythonFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesJavaFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesJvmFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesBinaryFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileTypeIsUnknown>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesCsharpFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesAdaFileExtension>, describe_field_t<SgFile,bool,&SgFile::p_sourceFileUsesJovialFileExtension>, describe_field_t<SgFile,int,&SgFile::p_detect_dangling_pointers>, describe_field_t<SgFile,bool,&SgFile::p_experimental_flang_frontend>, describe_field_t<SgFile,bool,&SgFile::p_read_executable_file_format_only>, describe_field_t<SgFile,bool,&SgFile::p_visualize_executable_file_format_skip_symbols>, describe_field_t<SgFile,bool,&SgFile::p_visualize_dwarf_only>, describe_field_t<SgFile,bool,&SgFile::p_read_instructions_only>, describe_field_t<SgFile,SgStringList,&SgFile::p_libraryArchiveObjectFileNameList>, describe_field_t<SgFile,bool,&SgFile::p_isLibraryArchive>, describe_field_t<SgFile,bool,&SgFile::p_isObjectFile>, describe_field_t<SgFile,bool,&SgFile::p_unparse_tokens>, describe_field_t<SgFile,int,&SgFile::p_unparse_tokens_testing>, describe_field_t<SgFile,bool,&SgFile::p_unparse_using_leading_and_trailing_token_mappings>, describe_field_t<SgFile,bool,&SgFile::p_unparse_template_ast>, describe_field_t<SgFile,bool,&SgFile::p_skipAstConsistancyTests>, describe_field_t<SgFile,bool,&SgFile::p_multifile_support>, describe_field_t<SgFile,bool,&SgFile::p_optimization>, describe_field_t<SgFile,bool,&SgFile::p_use_token_stream_to_improve_source_position_info>, describe_field_t<SgFile,bool,&SgFile::p_suppress_variable_declaration_normalization>, describe_field_t<SgFile,bool,&SgFile::p_edg_il_to_graphviz>, describe_field_t<SgFile,bool,&SgFile::p_clang_il_to_graphviz>, describe_field_t<SgFile,bool,&SgFile::p_no_optimize_flag_for_frontend>, describe_field_t<SgFile,bool,&SgFile::p_unparse_edg_normalized_method_ROSE_1392>, describe_field_t<SgFile,SgFile::standard_enum,&SgFile::p_standard>, describe_field_t<SgFile,bool,&SgFile::p_gnu_standard>, describe_field_t<SgFile,int,&SgFile::p_frontendErrorCode>, describe_field_t<SgFile,int,&SgFile::p_javacErrorCode>, describe_field_t<SgFile,int,&SgFile::p_ecjErrorCode>, describe_field_t<SgFile,int,&SgFile::p_midendErrorCode>, describe_field_t<SgFile,int,&SgFile::p_unparserErrorCode>, describe_field_t<SgFile,int,&SgFile::p_backendCompilerErrorCode>, describe_field_t<SgFile,bool,&SgFile::p_unparsedFileFailedCompilation>>;
16744};
16745template <> struct node_from_variant_t<419> { using type = SgFile; };
16746
16747// Class: FileList
16748template <> struct describe_field_t<SgFileList,SgFilePtrList,&SgFileList::p_listOfFiles> {
16749 using parent = SgFileList;
16750 using field_type = SgFilePtrList;
16751 static constexpr size_t position{0};
16752 static constexpr char const * const name{"listOfFiles"};
16753 static constexpr char const * const typestr{"SgFilePtrList"};
16754 static constexpr bool traverse{true};
16755 static constexpr auto mbr_ptr{&SgFileList::p_listOfFiles};
16756 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16757 using bind = Desc<SgFileList, SgFilePtrList SgFileList::*, &SgFileList::p_listOfFiles>;
16758};
16759template <> struct describe_field_t<SgFileList,AstAttributeMechanism*,&SgFileList::p_attributeMechanism> {
16760 using parent = SgFileList;
16762 static constexpr size_t position{1};
16763 static constexpr char const * const name{"attributeMechanism"};
16764 static constexpr char const * const typestr{"AstAttributeMechanism*"};
16765 static constexpr bool traverse{false};
16766 static constexpr auto mbr_ptr{&SgFileList::p_attributeMechanism};
16767 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16768 using bind = Desc<SgFileList, AstAttributeMechanism* SgFileList::*, &SgFileList::p_attributeMechanism>;
16769};
16770template <> struct describe_node_t<SgFileList> {
16771 using node = SgFileList;
16772 using base = SgSupport;
16773 static constexpr char const * const name{"FileList"};
16774 static constexpr unsigned long variant{420};
16775 static constexpr bool concrete{true};
16776 using subclasses_t = mp::List<>;
16778};
16779template <> struct node_from_variant_t<420> { using type = SgFileList; };
16780
16781// Class: FloatVal
16783 using parent = SgFloatVal;
16784 using field_type = float;
16785 static constexpr size_t position{0};
16786 static constexpr char const * const name{"value"};
16787 static constexpr char const * const typestr{"float"};
16788 static constexpr bool traverse{false};
16789 static constexpr auto mbr_ptr{&SgFloatVal::p_value};
16790 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16791 using bind = Desc<SgFloatVal, float SgFloatVal::*, &SgFloatVal::p_value>;
16792};
16793template <> struct describe_field_t<SgFloatVal,std::string,&SgFloatVal::p_valueString> {
16794 using parent = SgFloatVal;
16795 using field_type = std::string;
16796 static constexpr size_t position{1};
16797 static constexpr char const * const name{"valueString"};
16798 static constexpr char const * const typestr{"std::string"};
16799 static constexpr bool traverse{false};
16800 static constexpr auto mbr_ptr{&SgFloatVal::p_valueString};
16801 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16802 using bind = Desc<SgFloatVal, std::string SgFloatVal::*, &SgFloatVal::p_valueString>;
16803};
16804template <> struct describe_node_t<SgFloatVal> {
16805 using node = SgFloatVal;
16806 using base = SgValueExp;
16807 static constexpr char const * const name{"FloatVal"};
16808 static constexpr unsigned long variant{421};
16809 static constexpr bool concrete{true};
16810 using subclasses_t = mp::List<>;
16812};
16813template <> struct node_from_variant_t<421> { using type = SgFloatVal; };
16814
16815// Class: Float128Val
16816template <> struct describe_field_t<SgFloat128Val,long double,&SgFloat128Val::p_value> {
16817 using parent = SgFloat128Val;
16818 using field_type = long double;
16819 static constexpr size_t position{0};
16820 static constexpr char const * const name{"value"};
16821 static constexpr char const * const typestr{"long double"};
16822 static constexpr bool traverse{false};
16823 static constexpr auto mbr_ptr{&SgFloat128Val::p_value};
16824 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16825 using bind = Desc<SgFloat128Val, long double SgFloat128Val::*, &SgFloat128Val::p_value>;
16826};
16827template <> struct describe_field_t<SgFloat128Val,std::string,&SgFloat128Val::p_valueString> {
16828 using parent = SgFloat128Val;
16829 using field_type = std::string;
16830 static constexpr size_t position{1};
16831 static constexpr char const * const name{"valueString"};
16832 static constexpr char const * const typestr{"std::string"};
16833 static constexpr bool traverse{false};
16834 static constexpr auto mbr_ptr{&SgFloat128Val::p_valueString};
16835 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16836 using bind = Desc<SgFloat128Val, std::string SgFloat128Val::*, &SgFloat128Val::p_valueString>;
16837};
16838template <> struct describe_node_t<SgFloat128Val> {
16839 using node = SgFloat128Val;
16840 using base = SgValueExp;
16841 static constexpr char const * const name{"Float128Val"};
16842 static constexpr unsigned long variant{422};
16843 static constexpr bool concrete{true};
16844 using subclasses_t = mp::List<>;
16846};
16847template <> struct node_from_variant_t<422> { using type = SgFloat128Val; };
16848
16849// Class: Float80Val
16850template <> struct describe_field_t<SgFloat80Val,long double,&SgFloat80Val::p_value> {
16851 using parent = SgFloat80Val;
16852 using field_type = long double;
16853 static constexpr size_t position{0};
16854 static constexpr char const * const name{"value"};
16855 static constexpr char const * const typestr{"long double"};
16856 static constexpr bool traverse{false};
16857 static constexpr auto mbr_ptr{&SgFloat80Val::p_value};
16858 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16859 using bind = Desc<SgFloat80Val, long double SgFloat80Val::*, &SgFloat80Val::p_value>;
16860};
16861template <> struct describe_field_t<SgFloat80Val,std::string,&SgFloat80Val::p_valueString> {
16862 using parent = SgFloat80Val;
16863 using field_type = std::string;
16864 static constexpr size_t position{1};
16865 static constexpr char const * const name{"valueString"};
16866 static constexpr char const * const typestr{"std::string"};
16867 static constexpr bool traverse{false};
16868 static constexpr auto mbr_ptr{&SgFloat80Val::p_valueString};
16869 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16870 using bind = Desc<SgFloat80Val, std::string SgFloat80Val::*, &SgFloat80Val::p_valueString>;
16871};
16872template <> struct describe_node_t<SgFloat80Val> {
16873 using node = SgFloat80Val;
16874 using base = SgValueExp;
16875 static constexpr char const * const name{"Float80Val"};
16876 static constexpr unsigned long variant{423};
16877 static constexpr bool concrete{true};
16878 using subclasses_t = mp::List<>;
16880};
16881template <> struct node_from_variant_t<423> { using type = SgFloat80Val; };
16882
16883// Class: FoldExpression
16884template <> struct describe_field_t<SgFoldExpression,SgExpression*,&SgFoldExpression::p_operands> {
16885 using parent = SgFoldExpression;
16886 using field_type = SgExpression*;
16887 static constexpr size_t position{0};
16888 static constexpr char const * const name{"operands"};
16889 static constexpr char const * const typestr{"SgExpression*"};
16890 static constexpr bool traverse{true};
16891 static constexpr auto mbr_ptr{&SgFoldExpression::p_operands};
16892 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16893 using bind = Desc<SgFoldExpression, SgExpression* SgFoldExpression::*, &SgFoldExpression::p_operands>;
16894};
16895template <> struct describe_field_t<SgFoldExpression,std::string,&SgFoldExpression::p_operator_token> {
16896 using parent = SgFoldExpression;
16897 using field_type = std::string;
16898 static constexpr size_t position{1};
16899 static constexpr char const * const name{"operator_token"};
16900 static constexpr char const * const typestr{"std::string"};
16901 static constexpr bool traverse{false};
16902 static constexpr auto mbr_ptr{&SgFoldExpression::p_operator_token};
16903 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16904 using bind = Desc<SgFoldExpression, std::string SgFoldExpression::*, &SgFoldExpression::p_operator_token>;
16905};
16906template <> struct describe_field_t<SgFoldExpression,bool,&SgFoldExpression::p_is_left_associative> {
16907 using parent = SgFoldExpression;
16908 using field_type = bool;
16909 static constexpr size_t position{2};
16910 static constexpr char const * const name{"is_left_associative"};
16911 static constexpr char const * const typestr{"bool"};
16912 static constexpr bool traverse{false};
16913 static constexpr auto mbr_ptr{&SgFoldExpression::p_is_left_associative};
16914 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16915 using bind = Desc<SgFoldExpression, bool SgFoldExpression::*, &SgFoldExpression::p_is_left_associative>;
16916};
16918 using node = SgFoldExpression;
16919 using base = SgExpression;
16920 static constexpr char const * const name{"FoldExpression"};
16921 static constexpr unsigned long variant{424};
16922 static constexpr bool concrete{true};
16923 using subclasses_t = mp::List<>;
16925};
16926template <> struct node_from_variant_t<424> { using type = SgFoldExpression; };
16927
16928// Class: FlushStatement
16930 using node = SgFlushStatement;
16931 using base = SgIOStatement;
16932 static constexpr char const * const name{"FlushStatement"};
16933 static constexpr unsigned long variant{425};
16934 static constexpr bool concrete{true};
16935 using subclasses_t = mp::List<>;
16936 using fields_t = mp::List<>;
16937};
16938template <> struct node_from_variant_t<425> { using type = SgFlushStatement; };
16939
16940// Class: ForAllStatement
16941template <> struct describe_field_t<SgForAllStatement,SgExprListExp*,&SgForAllStatement::p_forall_header> {
16942 using parent = SgForAllStatement;
16943 using field_type = SgExprListExp*;
16944 static constexpr size_t position{0};
16945 static constexpr char const * const name{"forall_header"};
16946 static constexpr char const * const typestr{"SgExprListExp*"};
16947 static constexpr bool traverse{true};
16948 static constexpr auto mbr_ptr{&SgForAllStatement::p_forall_header};
16949 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16950 using bind = Desc<SgForAllStatement, SgExprListExp* SgForAllStatement::*, &SgForAllStatement::p_forall_header>;
16951};
16952template <> struct describe_field_t<SgForAllStatement,SgBasicBlock*,&SgForAllStatement::p_body> {
16953 using parent = SgForAllStatement;
16954 using field_type = SgBasicBlock*;
16955 static constexpr size_t position{1};
16956 static constexpr char const * const name{"body"};
16957 static constexpr char const * const typestr{"SgBasicBlock*"};
16958 static constexpr bool traverse{true};
16959 static constexpr auto mbr_ptr{&SgForAllStatement::p_body};
16960 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16961 using bind = Desc<SgForAllStatement, SgBasicBlock* SgForAllStatement::*, &SgForAllStatement::p_body>;
16962};
16963template <> struct describe_field_t<SgForAllStatement,bool,&SgForAllStatement::p_has_end_statement> {
16964 using parent = SgForAllStatement;
16965 using field_type = bool;
16966 static constexpr size_t position{2};
16967 static constexpr char const * const name{"has_end_statement"};
16968 static constexpr char const * const typestr{"bool"};
16969 static constexpr bool traverse{false};
16970 static constexpr auto mbr_ptr{&SgForAllStatement::p_has_end_statement};
16971 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16972 using bind = Desc<SgForAllStatement, bool SgForAllStatement::*, &SgForAllStatement::p_has_end_statement>;
16973};
16974template <> struct describe_field_t<SgForAllStatement,std::string,&SgForAllStatement::p_string_label> {
16975 using parent = SgForAllStatement;
16976 using field_type = std::string;
16977 static constexpr size_t position{3};
16978 static constexpr char const * const name{"string_label"};
16979 static constexpr char const * const typestr{"std::string"};
16980 static constexpr bool traverse{false};
16981 static constexpr auto mbr_ptr{&SgForAllStatement::p_string_label};
16982 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16983 using bind = Desc<SgForAllStatement, std::string SgForAllStatement::*, &SgForAllStatement::p_string_label>;
16984};
16985template <> struct describe_field_t<SgForAllStatement,SgLabelRefExp*,&SgForAllStatement::p_end_numeric_label> {
16986 using parent = SgForAllStatement;
16987 using field_type = SgLabelRefExp*;
16988 static constexpr size_t position{4};
16989 static constexpr char const * const name{"end_numeric_label"};
16990 static constexpr char const * const typestr{"SgLabelRefExp*"};
16991 static constexpr bool traverse{false};
16992 static constexpr auto mbr_ptr{&SgForAllStatement::p_end_numeric_label};
16993 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
16994 using bind = Desc<SgForAllStatement, SgLabelRefExp* SgForAllStatement::*, &SgForAllStatement::p_end_numeric_label>;
16995};
16996template <> struct describe_field_t<SgForAllStatement,SgForAllStatement::forall_statement_kind_enum,&SgForAllStatement::p_forall_statement_kind> {
16997 using parent = SgForAllStatement;
16999 static constexpr size_t position{5};
17000 static constexpr char const * const name{"forall_statement_kind"};
17001 static constexpr char const * const typestr{"SgForAllStatement::forall_statement_kind_enum"};
17002 static constexpr bool traverse{false};
17003 static constexpr auto mbr_ptr{&SgForAllStatement::p_forall_statement_kind};
17004 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17005 using bind = Desc<SgForAllStatement, SgForAllStatement::forall_statement_kind_enum SgForAllStatement::*, &SgForAllStatement::p_forall_statement_kind>;
17006};
17016template <> struct node_from_variant_t<426> { using type = SgForAllStatement; };
17017
17018// Class: ForInitStatement
17020 using parent = SgForInitStatement;
17021 using field_type = SgStatementPtrList;
17022 static constexpr size_t position{0};
17023 static constexpr char const * const name{"init_stmt"};
17024 static constexpr char const * const typestr{"SgStatementPtrList"};
17025 static constexpr bool traverse{true};
17026 static constexpr auto mbr_ptr{&SgForInitStatement::p_init_stmt};
17027 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17028 using bind = Desc<SgForInitStatement, SgStatementPtrList SgForInitStatement::*, &SgForInitStatement::p_init_stmt>;
17029};
17031 using node = SgForInitStatement;
17032 using base = SgStatement;
17033 static constexpr char const * const name{"ForInitStatement"};
17034 static constexpr unsigned long variant{427};
17035 static constexpr bool concrete{true};
17036 using subclasses_t = mp::List<>;
17038};
17039template <> struct node_from_variant_t<427> { using type = SgForInitStatement; };
17040
17041// Class: ForStatement
17043 using parent = SgForStatement;
17045 static constexpr size_t position{0};
17046 static constexpr char const * const name{"for_init_stmt"};
17047 static constexpr char const * const typestr{"SgForInitStatement*"};
17048 static constexpr bool traverse{true};
17049 static constexpr auto mbr_ptr{&SgForStatement::p_for_init_stmt};
17050 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17051 using bind = Desc<SgForStatement, SgForInitStatement* SgForStatement::*, &SgForStatement::p_for_init_stmt>;
17052};
17053template <> struct describe_field_t<SgForStatement,SgStatement*,&SgForStatement::p_test> {
17054 using parent = SgForStatement;
17055 using field_type = SgStatement*;
17056 static constexpr size_t position{1};
17057 static constexpr char const * const name{"test"};
17058 static constexpr char const * const typestr{"SgStatement*"};
17059 static constexpr bool traverse{true};
17060 static constexpr auto mbr_ptr{&SgForStatement::p_test};
17061 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17062 using bind = Desc<SgForStatement, SgStatement* SgForStatement::*, &SgForStatement::p_test>;
17063};
17064template <> struct describe_field_t<SgForStatement,SgExpression*,&SgForStatement::p_increment> {
17065 using parent = SgForStatement;
17066 using field_type = SgExpression*;
17067 static constexpr size_t position{2};
17068 static constexpr char const * const name{"increment"};
17069 static constexpr char const * const typestr{"SgExpression*"};
17070 static constexpr bool traverse{true};
17071 static constexpr auto mbr_ptr{&SgForStatement::p_increment};
17072 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17073 using bind = Desc<SgForStatement, SgExpression* SgForStatement::*, &SgForStatement::p_increment>;
17074};
17076 using parent = SgForStatement;
17077 using field_type = SgStatement*;
17078 static constexpr size_t position{3};
17079 static constexpr char const * const name{"loop_body"};
17080 static constexpr char const * const typestr{"SgStatement*"};
17081 static constexpr bool traverse{true};
17082 static constexpr auto mbr_ptr{&SgForStatement::p_loop_body};
17083 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17084 using bind = Desc<SgForStatement, SgStatement* SgForStatement::*, &SgForStatement::p_loop_body>;
17085};
17087 using parent = SgForStatement;
17088 using field_type = SgStatement*;
17089 static constexpr size_t position{4};
17090 static constexpr char const * const name{"else_body"};
17091 static constexpr char const * const typestr{"SgStatement*"};
17092 static constexpr bool traverse{true};
17093 static constexpr auto mbr_ptr{&SgForStatement::p_else_body};
17094 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17095 using bind = Desc<SgForStatement, SgStatement* SgForStatement::*, &SgForStatement::p_else_body>;
17096};
17097template <> struct describe_field_t<SgForStatement,std::string,&SgForStatement::p_string_label> {
17098 using parent = SgForStatement;
17099 using field_type = std::string;
17100 static constexpr size_t position{5};
17101 static constexpr char const * const name{"string_label"};
17102 static constexpr char const * const typestr{"std::string"};
17103 static constexpr bool traverse{false};
17104 static constexpr auto mbr_ptr{&SgForStatement::p_string_label};
17105 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17106 using bind = Desc<SgForStatement, std::string SgForStatement::*, &SgForStatement::p_string_label>;
17107};
17117template <> struct node_from_variant_t<428> { using type = SgForStatement; };
17118
17119// Class: FormatItem
17120template <> struct describe_field_t<SgFormatItem,int,&SgFormatItem::p_repeat_specification> {
17121 using parent = SgFormatItem;
17122 using field_type = int;
17123 static constexpr size_t position{0};
17124 static constexpr char const * const name{"repeat_specification"};
17125 static constexpr char const * const typestr{"int"};
17126 static constexpr bool traverse{false};
17127 static constexpr auto mbr_ptr{&SgFormatItem::p_repeat_specification};
17128 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17129 using bind = Desc<SgFormatItem, int SgFormatItem::*, &SgFormatItem::p_repeat_specification>;
17130};
17131template <> struct describe_field_t<SgFormatItem,SgExpression*,&SgFormatItem::p_data> {
17132 using parent = SgFormatItem;
17133 using field_type = SgExpression*;
17134 static constexpr size_t position{1};
17135 static constexpr char const * const name{"data"};
17136 static constexpr char const * const typestr{"SgExpression*"};
17137 static constexpr bool traverse{false};
17138 static constexpr auto mbr_ptr{&SgFormatItem::p_data};
17139 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17140 using bind = Desc<SgFormatItem, SgExpression* SgFormatItem::*, &SgFormatItem::p_data>;
17141};
17142template <> struct describe_field_t<SgFormatItem,SgFormatItemList*,&SgFormatItem::p_format_item_list> {
17143 using parent = SgFormatItem;
17145 static constexpr size_t position{2};
17146 static constexpr char const * const name{"format_item_list"};
17147 static constexpr char const * const typestr{"SgFormatItemList*"};
17148 static constexpr bool traverse{false};
17149 static constexpr auto mbr_ptr{&SgFormatItem::p_format_item_list};
17150 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17151 using bind = Desc<SgFormatItem, SgFormatItemList* SgFormatItem::*, &SgFormatItem::p_format_item_list>;
17152};
17153template <> struct describe_node_t<SgFormatItem> {
17154 using node = SgFormatItem;
17155 using base = SgSupport;
17156 static constexpr char const * const name{"FormatItem"};
17157 static constexpr unsigned long variant{429};
17158 static constexpr bool concrete{true};
17159 using subclasses_t = mp::List<>;
17161};
17162template <> struct node_from_variant_t<429> { using type = SgFormatItem; };
17163
17164// Class: FormatItemList
17165template <> struct describe_field_t<SgFormatItemList,SgFormatItemPtrList,&SgFormatItemList::p_format_item_list> {
17166 using parent = SgFormatItemList;
17167 using field_type = SgFormatItemPtrList;
17168 static constexpr size_t position{0};
17169 static constexpr char const * const name{"format_item_list"};
17170 static constexpr char const * const typestr{"SgFormatItemPtrList"};
17171 static constexpr bool traverse{false};
17172 static constexpr auto mbr_ptr{&SgFormatItemList::p_format_item_list};
17173 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17174 using bind = Desc<SgFormatItemList, SgFormatItemPtrList SgFormatItemList::*, &SgFormatItemList::p_format_item_list>;
17175};
17177 using node = SgFormatItemList;
17178 using base = SgSupport;
17179 static constexpr char const * const name{"FormatItemList"};
17180 static constexpr unsigned long variant{430};
17181 static constexpr bool concrete{true};
17182 using subclasses_t = mp::List<>;
17184};
17185template <> struct node_from_variant_t<430> { using type = SgFormatItemList; };
17186
17187// Class: FormatStatement
17188template <> struct describe_field_t<SgFormatStatement,SgFormatItemList*,&SgFormatStatement::p_format_item_list> {
17189 using parent = SgFormatStatement;
17191 static constexpr size_t position{0};
17192 static constexpr char const * const name{"format_item_list"};
17193 static constexpr char const * const typestr{"SgFormatItemList*"};
17194 static constexpr bool traverse{false};
17195 static constexpr auto mbr_ptr{&SgFormatStatement::p_format_item_list};
17196 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17197 using bind = Desc<SgFormatStatement, SgFormatItemList* SgFormatStatement::*, &SgFormatStatement::p_format_item_list>;
17198};
17200 using node = SgFormatStatement;
17202 static constexpr char const * const name{"FormatStatement"};
17203 static constexpr unsigned long variant{431};
17204 static constexpr bool concrete{true};
17205 using subclasses_t = mp::List<>;
17207};
17208template <> struct node_from_variant_t<431> { using type = SgFormatStatement; };
17209
17210// Class: FortranDo
17211template <> struct describe_field_t<SgFortranDo,SgExpression*,&SgFortranDo::p_initialization> {
17212 using parent = SgFortranDo;
17213 using field_type = SgExpression*;
17214 static constexpr size_t position{0};
17215 static constexpr char const * const name{"initialization"};
17216 static constexpr char const * const typestr{"SgExpression*"};
17217 static constexpr bool traverse{true};
17218 static constexpr auto mbr_ptr{&SgFortranDo::p_initialization};
17219 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17220 using bind = Desc<SgFortranDo, SgExpression* SgFortranDo::*, &SgFortranDo::p_initialization>;
17221};
17222template <> struct describe_field_t<SgFortranDo,SgExpression*,&SgFortranDo::p_bound> {
17223 using parent = SgFortranDo;
17224 using field_type = SgExpression*;
17225 static constexpr size_t position{1};
17226 static constexpr char const * const name{"bound"};
17227 static constexpr char const * const typestr{"SgExpression*"};
17228 static constexpr bool traverse{true};
17229 static constexpr auto mbr_ptr{&SgFortranDo::p_bound};
17230 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17231 using bind = Desc<SgFortranDo, SgExpression* SgFortranDo::*, &SgFortranDo::p_bound>;
17232};
17233template <> struct describe_field_t<SgFortranDo,SgExpression*,&SgFortranDo::p_increment> {
17234 using parent = SgFortranDo;
17235 using field_type = SgExpression*;
17236 static constexpr size_t position{2};
17237 static constexpr char const * const name{"increment"};
17238 static constexpr char const * const typestr{"SgExpression*"};
17239 static constexpr bool traverse{true};
17240 static constexpr auto mbr_ptr{&SgFortranDo::p_increment};
17241 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17242 using bind = Desc<SgFortranDo, SgExpression* SgFortranDo::*, &SgFortranDo::p_increment>;
17243};
17244template <> struct describe_field_t<SgFortranDo,SgBasicBlock*,&SgFortranDo::p_body> {
17245 using parent = SgFortranDo;
17246 using field_type = SgBasicBlock*;
17247 static constexpr size_t position{3};
17248 static constexpr char const * const name{"body"};
17249 static constexpr char const * const typestr{"SgBasicBlock*"};
17250 static constexpr bool traverse{true};
17251 static constexpr auto mbr_ptr{&SgFortranDo::p_body};
17252 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17253 using bind = Desc<SgFortranDo, SgBasicBlock* SgFortranDo::*, &SgFortranDo::p_body>;
17254};
17255template <> struct describe_field_t<SgFortranDo,SgLabelRefExp*,&SgFortranDo::p_end_numeric_label> {
17256 using parent = SgFortranDo;
17257 using field_type = SgLabelRefExp*;
17258 static constexpr size_t position{4};
17259 static constexpr char const * const name{"end_numeric_label"};
17260 static constexpr char const * const typestr{"SgLabelRefExp*"};
17261 static constexpr bool traverse{false};
17262 static constexpr auto mbr_ptr{&SgFortranDo::p_end_numeric_label};
17263 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17264 using bind = Desc<SgFortranDo, SgLabelRefExp* SgFortranDo::*, &SgFortranDo::p_end_numeric_label>;
17265};
17266template <> struct describe_field_t<SgFortranDo,std::string,&SgFortranDo::p_string_label> {
17267 using parent = SgFortranDo;
17268 using field_type = std::string;
17269 static constexpr size_t position{5};
17270 static constexpr char const * const name{"string_label"};
17271 static constexpr char const * const typestr{"std::string"};
17272 static constexpr bool traverse{false};
17273 static constexpr auto mbr_ptr{&SgFortranDo::p_string_label};
17274 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17275 using bind = Desc<SgFortranDo, std::string SgFortranDo::*, &SgFortranDo::p_string_label>;
17276};
17277template <> struct describe_field_t<SgFortranDo,bool,&SgFortranDo::p_old_style> {
17278 using parent = SgFortranDo;
17279 using field_type = bool;
17280 static constexpr size_t position{6};
17281 static constexpr char const * const name{"old_style"};
17282 static constexpr char const * const typestr{"bool"};
17283 static constexpr bool traverse{false};
17284 static constexpr auto mbr_ptr{&SgFortranDo::p_old_style};
17285 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17286 using bind = Desc<SgFortranDo, bool SgFortranDo::*, &SgFortranDo::p_old_style>;
17287};
17288template <> struct describe_field_t<SgFortranDo,bool,&SgFortranDo::p_has_end_statement> {
17289 using parent = SgFortranDo;
17290 using field_type = bool;
17291 static constexpr size_t position{7};
17292 static constexpr char const * const name{"has_end_statement"};
17293 static constexpr char const * const typestr{"bool"};
17294 static constexpr bool traverse{false};
17295 static constexpr auto mbr_ptr{&SgFortranDo::p_has_end_statement};
17296 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17297 using bind = Desc<SgFortranDo, bool SgFortranDo::*, &SgFortranDo::p_has_end_statement>;
17298};
17308template <> struct node_from_variant_t<432> { using type = SgFortranDo; };
17309
17310// Class: FortranIncludeLine
17311template <> struct describe_field_t<SgFortranIncludeLine,std::string,&SgFortranIncludeLine::p_filename> {
17313 using field_type = std::string;
17314 static constexpr size_t position{0};
17315 static constexpr char const * const name{"filename"};
17316 static constexpr char const * const typestr{"std::string"};
17317 static constexpr bool traverse{false};
17318 static constexpr auto mbr_ptr{&SgFortranIncludeLine::p_filename};
17319 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17320 using bind = Desc<SgFortranIncludeLine, std::string SgFortranIncludeLine::*, &SgFortranIncludeLine::p_filename>;
17321};
17323 using node = SgFortranIncludeLine;
17325 static constexpr char const * const name{"FortranIncludeLine"};
17326 static constexpr unsigned long variant{433};
17327 static constexpr bool concrete{true};
17328 using subclasses_t = mp::List<>;
17330};
17331template <> struct node_from_variant_t<433> { using type = SgFortranIncludeLine; };
17332
17333// Class: FortranNonblockedDo
17334template <> struct describe_field_t<SgFortranNonblockedDo,SgStatement*,&SgFortranNonblockedDo::p_end_statement> {
17336 using field_type = SgStatement*;
17337 static constexpr size_t position{0};
17338 static constexpr char const * const name{"end_statement"};
17339 static constexpr char const * const typestr{"SgStatement*"};
17340 static constexpr bool traverse{false};
17341 static constexpr auto mbr_ptr{&SgFortranNonblockedDo::p_end_statement};
17342 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17343 using bind = Desc<SgFortranNonblockedDo, SgStatement* SgFortranNonblockedDo::*, &SgFortranNonblockedDo::p_end_statement>;
17344};
17347 using base = SgFortranDo;
17348 static constexpr char const * const name{"FortranNonblockedDo"};
17349 static constexpr unsigned long variant{434};
17350 static constexpr bool concrete{true};
17351 using subclasses_t = mp::List<>;
17353};
17354template <> struct node_from_variant_t<434> { using type = SgFortranNonblockedDo; };
17355
17356// Class: FuncDecl_attr
17358 using node = SgFuncDecl_attr;
17359 using base = SgBitAttribute;
17360 static constexpr char const * const name{"FuncDecl_attr"};
17361 static constexpr unsigned long variant{435};
17362 static constexpr bool concrete{true};
17363 using subclasses_t = mp::List<>;
17364 using fields_t = mp::List<>;
17365};
17366template <> struct node_from_variant_t<435> { using type = SgFuncDecl_attr; };
17367
17368// Class: FunctionCallExp
17369template <> struct describe_field_t<SgFunctionCallExp,bool,&SgFunctionCallExp::p_uses_operator_syntax> {
17370 using parent = SgFunctionCallExp;
17371 using field_type = bool;
17372 static constexpr size_t position{0};
17373 static constexpr char const * const name{"uses_operator_syntax"};
17374 static constexpr char const * const typestr{"bool"};
17375 static constexpr bool traverse{false};
17376 static constexpr auto mbr_ptr{&SgFunctionCallExp::p_uses_operator_syntax};
17377 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17378 using bind = Desc<SgFunctionCallExp, bool SgFunctionCallExp::*, &SgFunctionCallExp::p_uses_operator_syntax>;
17379};
17380template <> struct describe_field_t<SgFunctionCallExp,bool,&SgFunctionCallExp::p_usesObjectCallSyntax> {
17381 using parent = SgFunctionCallExp;
17382 using field_type = bool;
17383 static constexpr size_t position{1};
17384 static constexpr char const * const name{"usesObjectCallSyntax"};
17385 static constexpr char const * const typestr{"bool"};
17386 static constexpr bool traverse{false};
17387 static constexpr auto mbr_ptr{&SgFunctionCallExp::p_usesObjectCallSyntax};
17388 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17389 using bind = Desc<SgFunctionCallExp, bool SgFunctionCallExp::*, &SgFunctionCallExp::p_usesObjectCallSyntax>;
17390};
17392 using node = SgFunctionCallExp;
17393 using base = SgCallExpression;
17394 static constexpr char const * const name{"FunctionCallExp"};
17395 static constexpr unsigned long variant{436};
17396 static constexpr bool concrete{true};
17399};
17400template <> struct node_from_variant_t<436> { using type = SgFunctionCallExp; };
17401
17402// Class: FunctionDeclaration
17405 using field_type = SgName;
17406 static constexpr size_t position{0};
17407 static constexpr char const * const name{"name"};
17408 static constexpr char const * const typestr{"SgName"};
17409 static constexpr bool traverse{false};
17410 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_name};
17411 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17412 using bind = Desc<SgFunctionDeclaration, SgName SgFunctionDeclaration::*, &SgFunctionDeclaration::p_name>;
17413};
17414template <> struct describe_field_t<SgFunctionDeclaration,SgFunctionParameterList*,&SgFunctionDeclaration::p_parameterList> {
17417 static constexpr size_t position{1};
17418 static constexpr char const * const name{"parameterList"};
17419 static constexpr char const * const typestr{"SgFunctionParameterList*"};
17420 static constexpr bool traverse{true};
17421 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_parameterList};
17422 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17423 using bind = Desc<SgFunctionDeclaration, SgFunctionParameterList* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_parameterList>;
17424};
17428 static constexpr size_t position{2};
17429 static constexpr char const * const name{"functionModifier"};
17430 static constexpr char const * const typestr{"SgFunctionModifier"};
17431 static constexpr bool traverse{false};
17432 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_functionModifier};
17433 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17434 using bind = Desc<SgFunctionDeclaration, SgFunctionModifier SgFunctionDeclaration::*, &SgFunctionDeclaration::p_functionModifier>;
17435};
17439 static constexpr size_t position{3};
17440 static constexpr char const * const name{"specialFunctionModifier"};
17441 static constexpr char const * const typestr{"SgSpecialFunctionModifier"};
17442 static constexpr bool traverse{false};
17443 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_specialFunctionModifier};
17444 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17445 using bind = Desc<SgFunctionDeclaration, SgSpecialFunctionModifier SgFunctionDeclaration::*, &SgFunctionDeclaration::p_specialFunctionModifier>;
17446};
17447template <> struct describe_field_t<SgFunctionDeclaration,SgTypePtrList,&SgFunctionDeclaration::p_exceptionSpecification> {
17449 using field_type = SgTypePtrList;
17450 static constexpr size_t position{4};
17451 static constexpr char const * const name{"exceptionSpecification"};
17452 static constexpr char const * const typestr{"SgTypePtrList"};
17453 static constexpr bool traverse{false};
17454 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_exceptionSpecification};
17455 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17456 using bind = Desc<SgFunctionDeclaration, SgTypePtrList SgFunctionDeclaration::*, &SgFunctionDeclaration::p_exceptionSpecification>;
17457};
17458template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_named_in_end_statement> {
17460 using field_type = bool;
17461 static constexpr size_t position{5};
17462 static constexpr char const * const name{"named_in_end_statement"};
17463 static constexpr char const * const typestr{"bool"};
17464 static constexpr bool traverse{false};
17465 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_named_in_end_statement};
17466 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17467 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_named_in_end_statement>;
17468};
17469template <> struct describe_field_t<SgFunctionDeclaration,std::string,&SgFunctionDeclaration::p_asm_name> {
17471 using field_type = std::string;
17472 static constexpr size_t position{6};
17473 static constexpr char const * const name{"asm_name"};
17474 static constexpr char const * const typestr{"std::string"};
17475 static constexpr bool traverse{false};
17476 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_asm_name};
17477 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17478 using bind = Desc<SgFunctionDeclaration, std::string SgFunctionDeclaration::*, &SgFunctionDeclaration::p_asm_name>;
17479};
17482 using field_type = SgExprListExp*;
17483 static constexpr size_t position{7};
17484 static constexpr char const * const name{"decoratorList"};
17485 static constexpr char const * const typestr{"SgExprListExp*"};
17486 static constexpr bool traverse{true};
17487 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_decoratorList};
17488 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17489 using bind = Desc<SgFunctionDeclaration, SgExprListExp* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_decoratorList>;
17490};
17491template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_ada_formal_subprogram_decl> {
17493 using field_type = bool;
17494 static constexpr size_t position{8};
17495 static constexpr char const * const name{"ada_formal_subprogram_decl"};
17496 static constexpr char const * const typestr{"bool"};
17497 static constexpr bool traverse{false};
17498 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_ada_formal_subprogram_decl};
17499 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17500 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_ada_formal_subprogram_decl>;
17501};
17502template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_ada_formal_decl_with_box> {
17504 using field_type = bool;
17505 static constexpr size_t position{9};
17506 static constexpr char const * const name{"ada_formal_decl_with_box"};
17507 static constexpr char const * const typestr{"bool"};
17508 static constexpr bool traverse{false};
17509 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_ada_formal_decl_with_box};
17510 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17511 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_ada_formal_decl_with_box>;
17512};
17515 using field_type = SgFunctionType*;
17516 static constexpr size_t position{10};
17517 static constexpr char const * const name{"type"};
17518 static constexpr char const * const typestr{"SgFunctionType*"};
17519 static constexpr bool traverse{false};
17520 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_type};
17521 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17522 using bind = Desc<SgFunctionDeclaration, SgFunctionType* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_type>;
17523};
17527 static constexpr size_t position{11};
17528 static constexpr char const * const name{"definition"};
17529 static constexpr char const * const typestr{"SgFunctionDefinition*"};
17530 static constexpr bool traverse{true};
17531 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_definition};
17532 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17533 using bind = Desc<SgFunctionDeclaration, SgFunctionDefinition* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_definition>;
17534};
17537 using field_type = bool;
17538 static constexpr size_t position{12};
17539 static constexpr char const * const name{"oldStyleDefinition"};
17540 static constexpr char const * const typestr{"bool"};
17541 static constexpr bool traverse{false};
17542 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_oldStyleDefinition};
17543 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17544 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_oldStyleDefinition>;
17545};
17546template <> struct describe_field_t<SgFunctionDeclaration,SgScopeStatement*,&SgFunctionDeclaration::p_scope> {
17549 static constexpr size_t position{13};
17550 static constexpr char const * const name{"scope"};
17551 static constexpr char const * const typestr{"SgScopeStatement*"};
17552 static constexpr bool traverse{false};
17553 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_scope};
17554 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17555 using bind = Desc<SgFunctionDeclaration, SgScopeStatement* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_scope>;
17556};
17557template <> struct describe_field_t<SgFunctionDeclaration,SgDeclarationStatement::template_specialization_enum,&SgFunctionDeclaration::p_specialization> {
17560 static constexpr size_t position{14};
17561 static constexpr char const * const name{"specialization"};
17562 static constexpr char const * const typestr{"SgDeclarationStatement::template_specialization_enum"};
17563 static constexpr bool traverse{false};
17564 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_specialization};
17565 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17566 using bind = Desc<SgFunctionDeclaration, SgDeclarationStatement::template_specialization_enum SgFunctionDeclaration::*, &SgFunctionDeclaration::p_specialization>;
17567};
17568template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_requiresNameQualificationOnReturnType> {
17570 using field_type = bool;
17571 static constexpr size_t position{15};
17572 static constexpr char const * const name{"requiresNameQualificationOnReturnType"};
17573 static constexpr char const * const typestr{"bool"};
17574 static constexpr bool traverse{false};
17575 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_requiresNameQualificationOnReturnType};
17576 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17577 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_requiresNameQualificationOnReturnType>;
17578};
17579template <> struct describe_field_t<SgFunctionDeclaration,std::string,&SgFunctionDeclaration::p_gnu_extension_section> {
17581 using field_type = std::string;
17582 static constexpr size_t position{16};
17583 static constexpr char const * const name{"gnu_extension_section"};
17584 static constexpr char const * const typestr{"std::string"};
17585 static constexpr bool traverse{false};
17586 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_gnu_extension_section};
17587 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17588 using bind = Desc<SgFunctionDeclaration, std::string SgFunctionDeclaration::*, &SgFunctionDeclaration::p_gnu_extension_section>;
17589};
17590template <> struct describe_field_t<SgFunctionDeclaration,std::string,&SgFunctionDeclaration::p_gnu_extension_alias> {
17592 using field_type = std::string;
17593 static constexpr size_t position{17};
17594 static constexpr char const * const name{"gnu_extension_alias"};
17595 static constexpr char const * const typestr{"std::string"};
17596 static constexpr bool traverse{false};
17597 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_gnu_extension_alias};
17598 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17599 using bind = Desc<SgFunctionDeclaration, std::string SgFunctionDeclaration::*, &SgFunctionDeclaration::p_gnu_extension_alias>;
17600};
17601template <> struct describe_field_t<SgFunctionDeclaration,SgDeclarationStatement::gnu_extension_visability_attribute_enum,&SgFunctionDeclaration::p_gnu_extension_visability> {
17604 static constexpr size_t position{18};
17605 static constexpr char const * const name{"gnu_extension_visability"};
17606 static constexpr char const * const typestr{"SgDeclarationStatement::gnu_extension_visability_attribute_enum"};
17607 static constexpr bool traverse{false};
17608 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_gnu_extension_visability};
17609 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17610 using bind = Desc<SgFunctionDeclaration, SgDeclarationStatement::gnu_extension_visability_attribute_enum SgFunctionDeclaration::*, &SgFunctionDeclaration::p_gnu_extension_visability>;
17611};
17612template <> struct describe_field_t<SgFunctionDeclaration,int,&SgFunctionDeclaration::p_name_qualification_length> {
17614 using field_type = int;
17615 static constexpr size_t position{19};
17616 static constexpr char const * const name{"name_qualification_length"};
17617 static constexpr char const * const typestr{"int"};
17618 static constexpr bool traverse{false};
17619 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_name_qualification_length};
17620 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17621 using bind = Desc<SgFunctionDeclaration, int SgFunctionDeclaration::*, &SgFunctionDeclaration::p_name_qualification_length>;
17622};
17623template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_type_elaboration_required> {
17625 using field_type = bool;
17626 static constexpr size_t position{20};
17627 static constexpr char const * const name{"type_elaboration_required"};
17628 static constexpr char const * const typestr{"bool"};
17629 static constexpr bool traverse{false};
17630 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_type_elaboration_required};
17631 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17632 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_type_elaboration_required>;
17633};
17634template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_global_qualification_required> {
17636 using field_type = bool;
17637 static constexpr size_t position{21};
17638 static constexpr char const * const name{"global_qualification_required"};
17639 static constexpr char const * const typestr{"bool"};
17640 static constexpr bool traverse{false};
17641 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_global_qualification_required};
17642 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17643 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_global_qualification_required>;
17644};
17645template <> struct describe_field_t<SgFunctionDeclaration,int,&SgFunctionDeclaration::p_name_qualification_length_for_return_type> {
17647 using field_type = int;
17648 static constexpr size_t position{22};
17649 static constexpr char const * const name{"name_qualification_length_for_return_type"};
17650 static constexpr char const * const typestr{"int"};
17651 static constexpr bool traverse{false};
17652 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_name_qualification_length_for_return_type};
17653 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17654 using bind = Desc<SgFunctionDeclaration, int SgFunctionDeclaration::*, &SgFunctionDeclaration::p_name_qualification_length_for_return_type>;
17655};
17656template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_type_elaboration_required_for_return_type> {
17658 using field_type = bool;
17659 static constexpr size_t position{23};
17660 static constexpr char const * const name{"type_elaboration_required_for_return_type"};
17661 static constexpr char const * const typestr{"bool"};
17662 static constexpr bool traverse{false};
17663 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_type_elaboration_required_for_return_type};
17664 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17665 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_type_elaboration_required_for_return_type>;
17666};
17667template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_global_qualification_required_for_return_type> {
17669 using field_type = bool;
17670 static constexpr size_t position{24};
17671 static constexpr char const * const name{"global_qualification_required_for_return_type"};
17672 static constexpr char const * const typestr{"bool"};
17673 static constexpr bool traverse{false};
17674 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_global_qualification_required_for_return_type};
17675 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17676 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_global_qualification_required_for_return_type>;
17677};
17678template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_prototypeIsWithoutParameters> {
17680 using field_type = bool;
17681 static constexpr size_t position{25};
17682 static constexpr char const * const name{"prototypeIsWithoutParameters"};
17683 static constexpr char const * const typestr{"bool"};
17684 static constexpr bool traverse{false};
17685 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_prototypeIsWithoutParameters};
17686 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17687 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_prototypeIsWithoutParameters>;
17688};
17689template <> struct describe_field_t<SgFunctionDeclaration,int,&SgFunctionDeclaration::p_gnu_regparm_attribute> {
17691 using field_type = int;
17692 static constexpr size_t position{26};
17693 static constexpr char const * const name{"gnu_regparm_attribute"};
17694 static constexpr char const * const typestr{"int"};
17695 static constexpr bool traverse{false};
17696 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_gnu_regparm_attribute};
17697 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17698 using bind = Desc<SgFunctionDeclaration, int SgFunctionDeclaration::*, &SgFunctionDeclaration::p_gnu_regparm_attribute>;
17699};
17700template <> struct describe_field_t<SgFunctionDeclaration,SgFunctionType*,&SgFunctionDeclaration::p_type_syntax> {
17702 using field_type = SgFunctionType*;
17703 static constexpr size_t position{27};
17704 static constexpr char const * const name{"type_syntax"};
17705 static constexpr char const * const typestr{"SgFunctionType*"};
17706 static constexpr bool traverse{false};
17707 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_type_syntax};
17708 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17709 using bind = Desc<SgFunctionDeclaration, SgFunctionType* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_type_syntax>;
17710};
17711template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_type_syntax_is_available> {
17713 using field_type = bool;
17714 static constexpr size_t position{28};
17715 static constexpr char const * const name{"type_syntax_is_available"};
17716 static constexpr char const * const typestr{"bool"};
17717 static constexpr bool traverse{false};
17718 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_type_syntax_is_available};
17719 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17720 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_type_syntax_is_available>;
17721};
17722template <> struct describe_field_t<SgFunctionDeclaration,SgFunctionParameterList*,&SgFunctionDeclaration::p_parameterList_syntax> {
17725 static constexpr size_t position{29};
17726 static constexpr char const * const name{"parameterList_syntax"};
17727 static constexpr char const * const typestr{"SgFunctionParameterList*"};
17728 static constexpr bool traverse{false};
17729 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_parameterList_syntax};
17730 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17731 using bind = Desc<SgFunctionDeclaration, SgFunctionParameterList* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_parameterList_syntax>;
17732};
17733template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_using_C11_Noreturn_keyword> {
17735 using field_type = bool;
17736 static constexpr size_t position{30};
17737 static constexpr char const * const name{"using_C11_Noreturn_keyword"};
17738 static constexpr char const * const typestr{"bool"};
17739 static constexpr bool traverse{false};
17740 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_using_C11_Noreturn_keyword};
17741 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17742 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_using_C11_Noreturn_keyword>;
17743};
17744template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_is_constexpr> {
17746 using field_type = bool;
17747 static constexpr size_t position{31};
17748 static constexpr char const * const name{"is_constexpr"};
17749 static constexpr char const * const typestr{"bool"};
17750 static constexpr bool traverse{false};
17751 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_is_constexpr};
17752 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17753 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_is_constexpr>;
17754};
17755template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_using_new_function_return_type_syntax> {
17757 using field_type = bool;
17758 static constexpr size_t position{32};
17759 static constexpr char const * const name{"using_new_function_return_type_syntax"};
17760 static constexpr char const * const typestr{"bool"};
17761 static constexpr bool traverse{false};
17762 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_using_new_function_return_type_syntax};
17763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17764 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_using_new_function_return_type_syntax>;
17765};
17766template <> struct describe_field_t<SgFunctionDeclaration,SgFunctionParameterScope*,&SgFunctionDeclaration::p_functionParameterScope> {
17769 static constexpr size_t position{33};
17770 static constexpr char const * const name{"functionParameterScope"};
17771 static constexpr char const * const typestr{"SgFunctionParameterScope*"};
17772 static constexpr bool traverse{false};
17773 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_functionParameterScope};
17774 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17775 using bind = Desc<SgFunctionDeclaration, SgFunctionParameterScope* SgFunctionDeclaration::*, &SgFunctionDeclaration::p_functionParameterScope>;
17776};
17777template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_marked_as_edg_normalization> {
17779 using field_type = bool;
17780 static constexpr size_t position{34};
17781 static constexpr char const * const name{"marked_as_edg_normalization"};
17782 static constexpr char const * const typestr{"bool"};
17783 static constexpr bool traverse{false};
17784 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_marked_as_edg_normalization};
17785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17786 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_marked_as_edg_normalization>;
17787};
17788template <> struct describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_is_implicit_function> {
17790 using field_type = bool;
17791 static constexpr size_t position{35};
17792 static constexpr char const * const name{"is_implicit_function"};
17793 static constexpr char const * const typestr{"bool"};
17794 static constexpr bool traverse{false};
17795 static constexpr auto mbr_ptr{&SgFunctionDeclaration::p_is_implicit_function};
17796 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17797 using bind = Desc<SgFunctionDeclaration, bool SgFunctionDeclaration::*, &SgFunctionDeclaration::p_is_implicit_function>;
17798};
17802 static constexpr char const * const name{"FunctionDeclaration"};
17803 static constexpr unsigned long variant{437};
17804 static constexpr bool concrete{true};
17806 using fields_t = mp::List<describe_field_t<SgFunctionDeclaration,SgName,&SgFunctionDeclaration::p_name>, describe_field_t<SgFunctionDeclaration,SgFunctionParameterList*,&SgFunctionDeclaration::p_parameterList>, describe_field_t<SgFunctionDeclaration,SgFunctionModifier,&SgFunctionDeclaration::p_functionModifier>, describe_field_t<SgFunctionDeclaration,SgSpecialFunctionModifier,&SgFunctionDeclaration::p_specialFunctionModifier>, describe_field_t<SgFunctionDeclaration,SgTypePtrList,&SgFunctionDeclaration::p_exceptionSpecification>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_named_in_end_statement>, describe_field_t<SgFunctionDeclaration,std::string,&SgFunctionDeclaration::p_asm_name>, describe_field_t<SgFunctionDeclaration,SgExprListExp*,&SgFunctionDeclaration::p_decoratorList>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_ada_formal_subprogram_decl>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_ada_formal_decl_with_box>, describe_field_t<SgFunctionDeclaration,SgFunctionType*,&SgFunctionDeclaration::p_type>, describe_field_t<SgFunctionDeclaration,SgFunctionDefinition*,&SgFunctionDeclaration::p_definition>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_oldStyleDefinition>, describe_field_t<SgFunctionDeclaration,SgScopeStatement*,&SgFunctionDeclaration::p_scope>, describe_field_t<SgFunctionDeclaration,SgDeclarationStatement::template_specialization_enum,&SgFunctionDeclaration::p_specialization>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_requiresNameQualificationOnReturnType>, describe_field_t<SgFunctionDeclaration,std::string,&SgFunctionDeclaration::p_gnu_extension_section>, describe_field_t<SgFunctionDeclaration,std::string,&SgFunctionDeclaration::p_gnu_extension_alias>, describe_field_t<SgFunctionDeclaration,SgDeclarationStatement::gnu_extension_visability_attribute_enum,&SgFunctionDeclaration::p_gnu_extension_visability>, describe_field_t<SgFunctionDeclaration,int,&SgFunctionDeclaration::p_name_qualification_length>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_type_elaboration_required>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_global_qualification_required>, describe_field_t<SgFunctionDeclaration,int,&SgFunctionDeclaration::p_name_qualification_length_for_return_type>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_type_elaboration_required_for_return_type>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_global_qualification_required_for_return_type>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_prototypeIsWithoutParameters>, describe_field_t<SgFunctionDeclaration,int,&SgFunctionDeclaration::p_gnu_regparm_attribute>, describe_field_t<SgFunctionDeclaration,SgFunctionType*,&SgFunctionDeclaration::p_type_syntax>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_type_syntax_is_available>, describe_field_t<SgFunctionDeclaration,SgFunctionParameterList*,&SgFunctionDeclaration::p_parameterList_syntax>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_using_C11_Noreturn_keyword>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_is_constexpr>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_using_new_function_return_type_syntax>, describe_field_t<SgFunctionDeclaration,SgFunctionParameterScope*,&SgFunctionDeclaration::p_functionParameterScope>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_marked_as_edg_normalization>, describe_field_t<SgFunctionDeclaration,bool,&SgFunctionDeclaration::p_is_implicit_function>>;
17807};
17808template <> struct node_from_variant_t<437> { using type = SgFunctionDeclaration; };
17809
17810// Class: FunctionDefinition
17813 using field_type = SgBasicBlock*;
17814 static constexpr size_t position{0};
17815 static constexpr char const * const name{"body"};
17816 static constexpr char const * const typestr{"SgBasicBlock*"};
17817 static constexpr bool traverse{true};
17818 static constexpr auto mbr_ptr{&SgFunctionDefinition::p_body};
17819 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17820 using bind = Desc<SgFunctionDefinition, SgBasicBlock* SgFunctionDefinition::*, &SgFunctionDefinition::p_body>;
17821};
17822template <> struct describe_field_t<SgFunctionDefinition,std::map<SgNode*,int>,&SgFunctionDefinition::p_scope_number_list> {
17824 using field_type = std::map<SgNode*,int>;
17825 static constexpr size_t position{1};
17826 static constexpr char const * const name{"scope_number_list"};
17827 static constexpr char const * const typestr{"std::map<SgNode*,int>"};
17828 static constexpr bool traverse{false};
17829 static constexpr auto mbr_ptr{&SgFunctionDefinition::p_scope_number_list};
17830 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17831 using bind = Desc<SgFunctionDefinition, std::map<SgNode*,int> SgFunctionDefinition::*, &SgFunctionDefinition::p_scope_number_list>;
17832};
17834 using node = SgFunctionDefinition;
17835 using base = SgScopeStatement;
17836 static constexpr char const * const name{"FunctionDefinition"};
17837 static constexpr unsigned long variant{438};
17838 static constexpr bool concrete{true};
17841};
17842template <> struct node_from_variant_t<438> { using type = SgFunctionDefinition; };
17843
17844// Class: FunctionParameterScope
17845template <> struct describe_field_t<SgFunctionParameterScope,SgDeclarationStatementPtrList,&SgFunctionParameterScope::p_declarations> {
17847 using field_type = SgDeclarationStatementPtrList;
17848 static constexpr size_t position{0};
17849 static constexpr char const * const name{"declarations"};
17850 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
17851 static constexpr bool traverse{true};
17852 static constexpr auto mbr_ptr{&SgFunctionParameterScope::p_declarations};
17853 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17854 using bind = Desc<SgFunctionParameterScope, SgDeclarationStatementPtrList SgFunctionParameterScope::*, &SgFunctionParameterScope::p_declarations>;
17855};
17858 using base = SgScopeStatement;
17859 static constexpr char const * const name{"FunctionParameterScope"};
17860 static constexpr unsigned long variant{439};
17861 static constexpr bool concrete{true};
17862 using subclasses_t = mp::List<>;
17864};
17865template <> struct node_from_variant_t<439> { using type = SgFunctionParameterScope; };
17866
17867// Class: FunctionModifier
17868template <> struct describe_field_t<SgFunctionModifier,SgBitVector,&SgFunctionModifier::p_modifierVector> {
17869 using parent = SgFunctionModifier;
17870 using field_type = SgBitVector;
17871 static constexpr size_t position{0};
17872 static constexpr char const * const name{"modifierVector"};
17873 static constexpr char const * const typestr{"SgBitVector"};
17874 static constexpr bool traverse{false};
17875 static constexpr auto mbr_ptr{&SgFunctionModifier::p_modifierVector};
17876 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17877 using bind = Desc<SgFunctionModifier, SgBitVector SgFunctionModifier::*, &SgFunctionModifier::p_modifierVector>;
17878};
17879template <> struct describe_field_t<SgFunctionModifier,unsigned long int,&SgFunctionModifier::p_gnu_attribute_constructor_destructor_priority> {
17880 using parent = SgFunctionModifier;
17881 using field_type = unsigned long int;
17882 static constexpr size_t position{1};
17883 static constexpr char const * const name{"gnu_attribute_constructor_destructor_priority"};
17884 static constexpr char const * const typestr{"unsigned long int"};
17885 static constexpr bool traverse{false};
17886 static constexpr auto mbr_ptr{&SgFunctionModifier::p_gnu_attribute_constructor_destructor_priority};
17887 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17888 using bind = Desc<SgFunctionModifier, unsigned long int SgFunctionModifier::*, &SgFunctionModifier::p_gnu_attribute_constructor_destructor_priority>;
17889};
17890template <> struct describe_field_t<SgFunctionModifier,std::string,&SgFunctionModifier::p_gnu_attribute_named_weak_reference> {
17891 using parent = SgFunctionModifier;
17892 using field_type = std::string;
17893 static constexpr size_t position{2};
17894 static constexpr char const * const name{"gnu_attribute_named_weak_reference"};
17895 static constexpr char const * const typestr{"std::string"};
17896 static constexpr bool traverse{false};
17897 static constexpr auto mbr_ptr{&SgFunctionModifier::p_gnu_attribute_named_weak_reference};
17898 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17899 using bind = Desc<SgFunctionModifier, std::string SgFunctionModifier::*, &SgFunctionModifier::p_gnu_attribute_named_weak_reference>;
17900};
17901template <> struct describe_field_t<SgFunctionModifier,std::string,&SgFunctionModifier::p_gnu_attribute_named_alias> {
17902 using parent = SgFunctionModifier;
17903 using field_type = std::string;
17904 static constexpr size_t position{3};
17905 static constexpr char const * const name{"gnu_attribute_named_alias"};
17906 static constexpr char const * const typestr{"std::string"};
17907 static constexpr bool traverse{false};
17908 static constexpr auto mbr_ptr{&SgFunctionModifier::p_gnu_attribute_named_alias};
17909 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17910 using bind = Desc<SgFunctionModifier, std::string SgFunctionModifier::*, &SgFunctionModifier::p_gnu_attribute_named_alias>;
17911};
17912template <> struct describe_field_t<SgFunctionModifier,SgType *,&SgFunctionModifier::p_opencl_vec_type> {
17913 using parent = SgFunctionModifier;
17914 using field_type = SgType *;
17915 static constexpr size_t position{4};
17916 static constexpr char const * const name{"opencl_vec_type"};
17917 static constexpr char const * const typestr{"SgType *"};
17918 static constexpr bool traverse{false};
17919 static constexpr auto mbr_ptr{&SgFunctionModifier::p_opencl_vec_type};
17920 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17921 using bind = Desc<SgFunctionModifier, SgType * SgFunctionModifier::*, &SgFunctionModifier::p_opencl_vec_type>;
17922};
17923template <> struct describe_field_t<SgFunctionModifier,SgFunctionModifier::opencl_work_group_size_t,&SgFunctionModifier::p_opencl_work_group_size> {
17924 using parent = SgFunctionModifier;
17926 static constexpr size_t position{5};
17927 static constexpr char const * const name{"opencl_work_group_size"};
17928 static constexpr char const * const typestr{"SgFunctionModifier::opencl_work_group_size_t"};
17929 static constexpr bool traverse{false};
17930 static constexpr auto mbr_ptr{&SgFunctionModifier::p_opencl_work_group_size};
17931 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17932 using bind = Desc<SgFunctionModifier, SgFunctionModifier::opencl_work_group_size_t SgFunctionModifier::*, &SgFunctionModifier::p_opencl_work_group_size>;
17933};
17943template <> struct node_from_variant_t<440> { using type = SgFunctionModifier; };
17944
17945// Class: FunctionParameterList
17946template <> struct describe_field_t<SgFunctionParameterList,SgInitializedNamePtrList,&SgFunctionParameterList::p_args> {
17948 using field_type = SgInitializedNamePtrList;
17949 static constexpr size_t position{0};
17950 static constexpr char const * const name{"args"};
17951 static constexpr char const * const typestr{"SgInitializedNamePtrList"};
17952 static constexpr bool traverse{true};
17953 static constexpr auto mbr_ptr{&SgFunctionParameterList::p_args};
17954 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17955 using bind = Desc<SgFunctionParameterList, SgInitializedNamePtrList SgFunctionParameterList::*, &SgFunctionParameterList::p_args>;
17956};
17960 static constexpr char const * const name{"FunctionParameterList"};
17961 static constexpr unsigned long variant{441};
17962 static constexpr bool concrete{true};
17963 using subclasses_t = mp::List<>;
17965};
17966template <> struct node_from_variant_t<441> { using type = SgFunctionParameterList; };
17967
17968// Class: FunctionParameterRefExp
17969template <> struct describe_field_t<SgFunctionParameterRefExp,int,&SgFunctionParameterRefExp::p_parameter_number> {
17971 using field_type = int;
17972 static constexpr size_t position{0};
17973 static constexpr char const * const name{"parameter_number"};
17974 static constexpr char const * const typestr{"int"};
17975 static constexpr bool traverse{false};
17976 static constexpr auto mbr_ptr{&SgFunctionParameterRefExp::p_parameter_number};
17977 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17978 using bind = Desc<SgFunctionParameterRefExp, int SgFunctionParameterRefExp::*, &SgFunctionParameterRefExp::p_parameter_number>;
17979};
17980template <> struct describe_field_t<SgFunctionParameterRefExp,int,&SgFunctionParameterRefExp::p_parameter_levels_up> {
17982 using field_type = int;
17983 static constexpr size_t position{1};
17984 static constexpr char const * const name{"parameter_levels_up"};
17985 static constexpr char const * const typestr{"int"};
17986 static constexpr bool traverse{false};
17987 static constexpr auto mbr_ptr{&SgFunctionParameterRefExp::p_parameter_levels_up};
17988 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
17989 using bind = Desc<SgFunctionParameterRefExp, int SgFunctionParameterRefExp::*, &SgFunctionParameterRefExp::p_parameter_levels_up>;
17990};
17991template <> struct describe_field_t<SgFunctionParameterRefExp,SgExpression*,&SgFunctionParameterRefExp::p_parameter_expression> {
17993 using field_type = SgExpression*;
17994 static constexpr size_t position{2};
17995 static constexpr char const * const name{"parameter_expression"};
17996 static constexpr char const * const typestr{"SgExpression*"};
17997 static constexpr bool traverse{true};
17998 static constexpr auto mbr_ptr{&SgFunctionParameterRefExp::p_parameter_expression};
17999 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18000 using bind = Desc<SgFunctionParameterRefExp, SgExpression* SgFunctionParameterRefExp::*, &SgFunctionParameterRefExp::p_parameter_expression>;
18001};
18002template <> struct describe_field_t<SgFunctionParameterRefExp,SgType*,&SgFunctionParameterRefExp::p_parameter_type> {
18004 using field_type = SgType*;
18005 static constexpr size_t position{3};
18006 static constexpr char const * const name{"parameter_type"};
18007 static constexpr char const * const typestr{"SgType*"};
18008 static constexpr bool traverse{false};
18009 static constexpr auto mbr_ptr{&SgFunctionParameterRefExp::p_parameter_type};
18010 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18011 using bind = Desc<SgFunctionParameterRefExp, SgType* SgFunctionParameterRefExp::*, &SgFunctionParameterRefExp::p_parameter_type>;
18012};
18022template <> struct node_from_variant_t<442> { using type = SgFunctionParameterRefExp; };
18023
18024// Class: FunctionParameterTypeList
18025template <> struct describe_field_t<SgFunctionParameterTypeList,SgTypePtrList,&SgFunctionParameterTypeList::p_arguments> {
18027 using field_type = SgTypePtrList;
18028 static constexpr size_t position{0};
18029 static constexpr char const * const name{"arguments"};
18030 static constexpr char const * const typestr{"SgTypePtrList"};
18031 static constexpr bool traverse{false};
18032 static constexpr auto mbr_ptr{&SgFunctionParameterTypeList::p_arguments};
18033 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18034 using bind = Desc<SgFunctionParameterTypeList, SgTypePtrList SgFunctionParameterTypeList::*, &SgFunctionParameterTypeList::p_arguments>;
18035};
18038 using base = SgSupport;
18039 static constexpr char const * const name{"FunctionParameterTypeList"};
18040 static constexpr unsigned long variant{443};
18041 static constexpr bool concrete{true};
18042 using subclasses_t = mp::List<>;
18044};
18045template <> struct node_from_variant_t<443> { using type = SgFunctionParameterTypeList; };
18046
18047// Class: FunctionRefExp
18048template <> struct describe_field_t<SgFunctionRefExp,SgFunctionSymbol*,&SgFunctionRefExp::p_symbol_i> {
18049 using parent = SgFunctionRefExp;
18051 static constexpr size_t position{0};
18052 static constexpr char const * const name{"symbol_i"};
18053 static constexpr char const * const typestr{"SgFunctionSymbol*"};
18054 static constexpr bool traverse{false};
18055 static constexpr auto mbr_ptr{&SgFunctionRefExp::p_symbol_i};
18056 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18057 using bind = Desc<SgFunctionRefExp, SgFunctionSymbol* SgFunctionRefExp::*, &SgFunctionRefExp::p_symbol_i>;
18058};
18059template <> struct describe_field_t<SgFunctionRefExp,SgFunctionType*,&SgFunctionRefExp::p_function_type> {
18060 using parent = SgFunctionRefExp;
18061 using field_type = SgFunctionType*;
18062 static constexpr size_t position{1};
18063 static constexpr char const * const name{"function_type"};
18064 static constexpr char const * const typestr{"SgFunctionType*"};
18065 static constexpr bool traverse{false};
18066 static constexpr auto mbr_ptr{&SgFunctionRefExp::p_function_type};
18067 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18068 using bind = Desc<SgFunctionRefExp, SgFunctionType* SgFunctionRefExp::*, &SgFunctionRefExp::p_function_type>;
18069};
18070template <> struct describe_field_t<SgFunctionRefExp,SgExpression*,&SgFunctionRefExp::p_originalExpressionTree> {
18071 using parent = SgFunctionRefExp;
18072 using field_type = SgExpression*;
18073 static constexpr size_t position{2};
18074 static constexpr char const * const name{"originalExpressionTree"};
18075 static constexpr char const * const typestr{"SgExpression*"};
18076 static constexpr bool traverse{false};
18077 static constexpr auto mbr_ptr{&SgFunctionRefExp::p_originalExpressionTree};
18078 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18079 using bind = Desc<SgFunctionRefExp, SgExpression* SgFunctionRefExp::*, &SgFunctionRefExp::p_originalExpressionTree>;
18080};
18081template <> struct describe_field_t<SgFunctionRefExp,int,&SgFunctionRefExp::p_name_qualification_length> {
18082 using parent = SgFunctionRefExp;
18083 using field_type = int;
18084 static constexpr size_t position{3};
18085 static constexpr char const * const name{"name_qualification_length"};
18086 static constexpr char const * const typestr{"int"};
18087 static constexpr bool traverse{false};
18088 static constexpr auto mbr_ptr{&SgFunctionRefExp::p_name_qualification_length};
18089 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18090 using bind = Desc<SgFunctionRefExp, int SgFunctionRefExp::*, &SgFunctionRefExp::p_name_qualification_length>;
18091};
18092template <> struct describe_field_t<SgFunctionRefExp,bool,&SgFunctionRefExp::p_type_elaboration_required> {
18093 using parent = SgFunctionRefExp;
18094 using field_type = bool;
18095 static constexpr size_t position{4};
18096 static constexpr char const * const name{"type_elaboration_required"};
18097 static constexpr char const * const typestr{"bool"};
18098 static constexpr bool traverse{false};
18099 static constexpr auto mbr_ptr{&SgFunctionRefExp::p_type_elaboration_required};
18100 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18101 using bind = Desc<SgFunctionRefExp, bool SgFunctionRefExp::*, &SgFunctionRefExp::p_type_elaboration_required>;
18102};
18103template <> struct describe_field_t<SgFunctionRefExp,bool,&SgFunctionRefExp::p_global_qualification_required> {
18104 using parent = SgFunctionRefExp;
18105 using field_type = bool;
18106 static constexpr size_t position{5};
18107 static constexpr char const * const name{"global_qualification_required"};
18108 static constexpr char const * const typestr{"bool"};
18109 static constexpr bool traverse{false};
18110 static constexpr auto mbr_ptr{&SgFunctionRefExp::p_global_qualification_required};
18111 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18112 using bind = Desc<SgFunctionRefExp, bool SgFunctionRefExp::*, &SgFunctionRefExp::p_global_qualification_required>;
18113};
18123template <> struct node_from_variant_t<444> { using type = SgFunctionRefExp; };
18124
18125// Class: FunctionSymbol
18126template <> struct describe_field_t<SgFunctionSymbol,SgFunctionDeclaration*,&SgFunctionSymbol::p_declaration> {
18127 using parent = SgFunctionSymbol;
18129 static constexpr size_t position{0};
18130 static constexpr char const * const name{"declaration"};
18131 static constexpr char const * const typestr{"SgFunctionDeclaration*"};
18132 static constexpr bool traverse{true};
18133 static constexpr auto mbr_ptr{&SgFunctionSymbol::p_declaration};
18134 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18135 using bind = Desc<SgFunctionSymbol, SgFunctionDeclaration* SgFunctionSymbol::*, &SgFunctionSymbol::p_declaration>;
18136};
18138 using node = SgFunctionSymbol;
18139 using base = SgSymbol;
18140 static constexpr char const * const name{"FunctionSymbol"};
18141 static constexpr unsigned long variant{445};
18142 static constexpr bool concrete{true};
18145};
18146template <> struct node_from_variant_t<445> { using type = SgFunctionSymbol; };
18147
18148// Class: FunctionType
18149template <> struct describe_field_t<SgFunctionType,SgType*,&SgFunctionType::p_return_type> {
18150 using parent = SgFunctionType;
18151 using field_type = SgType*;
18152 static constexpr size_t position{0};
18153 static constexpr char const * const name{"return_type"};
18154 static constexpr char const * const typestr{"SgType*"};
18155 static constexpr bool traverse{true};
18156 static constexpr auto mbr_ptr{&SgFunctionType::p_return_type};
18157 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18158 using bind = Desc<SgFunctionType, SgType* SgFunctionType::*, &SgFunctionType::p_return_type>;
18159};
18160template <> struct describe_field_t<SgFunctionType,bool,&SgFunctionType::p_has_ellipses> {
18161 using parent = SgFunctionType;
18162 using field_type = bool;
18163 static constexpr size_t position{1};
18164 static constexpr char const * const name{"has_ellipses"};
18165 static constexpr char const * const typestr{"bool"};
18166 static constexpr bool traverse{false};
18167 static constexpr auto mbr_ptr{&SgFunctionType::p_has_ellipses};
18168 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18169 using bind = Desc<SgFunctionType, bool SgFunctionType::*, &SgFunctionType::p_has_ellipses>;
18170};
18171template <> struct describe_field_t<SgFunctionType,SgType*,&SgFunctionType::p_orig_return_type> {
18172 using parent = SgFunctionType;
18173 using field_type = SgType*;
18174 static constexpr size_t position{2};
18175 static constexpr char const * const name{"orig_return_type"};
18176 static constexpr char const * const typestr{"SgType*"};
18177 static constexpr bool traverse{true};
18178 static constexpr auto mbr_ptr{&SgFunctionType::p_orig_return_type};
18179 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18180 using bind = Desc<SgFunctionType, SgType* SgFunctionType::*, &SgFunctionType::p_orig_return_type>;
18181};
18182template <> struct describe_field_t<SgFunctionType,SgFunctionParameterTypeList*,&SgFunctionType::p_argument_list> {
18183 using parent = SgFunctionType;
18185 static constexpr size_t position{3};
18186 static constexpr char const * const name{"argument_list"};
18187 static constexpr char const * const typestr{"SgFunctionParameterTypeList*"};
18188 static constexpr bool traverse{false};
18189 static constexpr auto mbr_ptr{&SgFunctionType::p_argument_list};
18190 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18191 using bind = Desc<SgFunctionType, SgFunctionParameterTypeList* SgFunctionType::*, &SgFunctionType::p_argument_list>;
18192};
18202template <> struct node_from_variant_t<446> { using type = SgFunctionType; };
18203
18204// Class: FunctionTypeSymbol
18205template <> struct describe_field_t<SgFunctionTypeSymbol,SgName,&SgFunctionTypeSymbol::p_name> {
18207 using field_type = SgName;
18208 static constexpr size_t position{0};
18209 static constexpr char const * const name{"name"};
18210 static constexpr char const * const typestr{"SgName"};
18211 static constexpr bool traverse{false};
18212 static constexpr auto mbr_ptr{&SgFunctionTypeSymbol::p_name};
18213 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18214 using bind = Desc<SgFunctionTypeSymbol, SgName SgFunctionTypeSymbol::*, &SgFunctionTypeSymbol::p_name>;
18215};
18216template <> struct describe_field_t<SgFunctionTypeSymbol,SgType*,&SgFunctionTypeSymbol::p_type> {
18218 using field_type = SgType*;
18219 static constexpr size_t position{1};
18220 static constexpr char const * const name{"type"};
18221 static constexpr char const * const typestr{"SgType*"};
18222 static constexpr bool traverse{false};
18223 static constexpr auto mbr_ptr{&SgFunctionTypeSymbol::p_type};
18224 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18225 using bind = Desc<SgFunctionTypeSymbol, SgType* SgFunctionTypeSymbol::*, &SgFunctionTypeSymbol::p_type>;
18226};
18228 using node = SgFunctionTypeSymbol;
18229 using base = SgSymbol;
18230 static constexpr char const * const name{"FunctionTypeSymbol"};
18231 static constexpr unsigned long variant{447};
18232 static constexpr bool concrete{true};
18233 using subclasses_t = mp::List<>;
18235};
18236template <> struct node_from_variant_t<447> { using type = SgFunctionTypeSymbol; };
18237
18238// Class: FunctionTypeTable
18241 using field_type = SgSymbolTable*;
18242 static constexpr size_t position{0};
18243 static constexpr char const * const name{"function_type_table"};
18244 static constexpr char const * const typestr{"SgSymbolTable*"};
18245 static constexpr bool traverse{false};
18246 static constexpr auto mbr_ptr{&SgFunctionTypeTable::p_function_type_table};
18247 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18248 using bind = Desc<SgFunctionTypeTable, SgSymbolTable* SgFunctionTypeTable::*, &SgFunctionTypeTable::p_function_type_table>;
18249};
18251 using node = SgFunctionTypeTable;
18252 using base = SgStatement;
18253 static constexpr char const * const name{"FunctionTypeTable"};
18254 static constexpr unsigned long variant{448};
18255 static constexpr bool concrete{true};
18256 using subclasses_t = mp::List<>;
18258};
18259template <> struct node_from_variant_t<448> { using type = SgFunctionTypeTable; };
18260
18261// Class: TypeTable
18262template <> struct describe_field_t<SgTypeTable,SgSymbolTable*,&SgTypeTable::p_type_table> {
18263 using parent = SgTypeTable;
18264 using field_type = SgSymbolTable*;
18265 static constexpr size_t position{0};
18266 static constexpr char const * const name{"type_table"};
18267 static constexpr char const * const typestr{"SgSymbolTable*"};
18268 static constexpr bool traverse{false};
18269 static constexpr auto mbr_ptr{&SgTypeTable::p_type_table};
18270 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18271 using bind = Desc<SgTypeTable, SgSymbolTable* SgTypeTable::*, &SgTypeTable::p_type_table>;
18272};
18273template <> struct describe_node_t<SgTypeTable> {
18274 using node = SgTypeTable;
18275 using base = SgSupport;
18276 static constexpr char const * const name{"TypeTable"};
18277 static constexpr unsigned long variant{449};
18278 static constexpr bool concrete{true};
18279 using subclasses_t = mp::List<>;
18281};
18282template <> struct node_from_variant_t<449> { using type = SgTypeTable; };
18283
18284// Class: Global
18285template <> struct describe_field_t<SgGlobal,SgDeclarationStatementPtrList,&SgGlobal::p_declarations> {
18286 using parent = SgGlobal;
18287 using field_type = SgDeclarationStatementPtrList;
18288 static constexpr size_t position{0};
18289 static constexpr char const * const name{"declarations"};
18290 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
18291 static constexpr bool traverse{true};
18292 static constexpr auto mbr_ptr{&SgGlobal::p_declarations};
18293 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18294 using bind = Desc<SgGlobal, SgDeclarationStatementPtrList SgGlobal::*, &SgGlobal::p_declarations>;
18295};
18296template <> struct describe_node_t<SgGlobal> {
18297 using node = SgGlobal;
18298 using base = SgScopeStatement;
18299 static constexpr char const * const name{"Global"};
18300 static constexpr unsigned long variant{450};
18301 static constexpr bool concrete{true};
18302 using subclasses_t = mp::List<>;
18304};
18305template <> struct node_from_variant_t<450> { using type = SgGlobal; };
18306
18307// Class: GotoStatement
18309 using parent = SgGotoStatement;
18311 static constexpr size_t position{0};
18312 static constexpr char const * const name{"label"};
18313 static constexpr char const * const typestr{"SgLabelStatement*"};
18314 static constexpr bool traverse{false};
18315 static constexpr auto mbr_ptr{&SgGotoStatement::p_label};
18316 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18317 using bind = Desc<SgGotoStatement, SgLabelStatement* SgGotoStatement::*, &SgGotoStatement::p_label>;
18318};
18319template <> struct describe_field_t<SgGotoStatement,SgLabelRefExp*,&SgGotoStatement::p_label_expression> {
18320 using parent = SgGotoStatement;
18321 using field_type = SgLabelRefExp*;
18322 static constexpr size_t position{1};
18323 static constexpr char const * const name{"label_expression"};
18324 static constexpr char const * const typestr{"SgLabelRefExp*"};
18325 static constexpr bool traverse{false};
18326 static constexpr auto mbr_ptr{&SgGotoStatement::p_label_expression};
18327 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18328 using bind = Desc<SgGotoStatement, SgLabelRefExp* SgGotoStatement::*, &SgGotoStatement::p_label_expression>;
18329};
18330template <> struct describe_field_t<SgGotoStatement,SgExpression*,&SgGotoStatement::p_selector_expression> {
18331 using parent = SgGotoStatement;
18332 using field_type = SgExpression*;
18333 static constexpr size_t position{2};
18334 static constexpr char const * const name{"selector_expression"};
18335 static constexpr char const * const typestr{"SgExpression*"};
18336 static constexpr bool traverse{false};
18337 static constexpr auto mbr_ptr{&SgGotoStatement::p_selector_expression};
18338 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18339 using bind = Desc<SgGotoStatement, SgExpression* SgGotoStatement::*, &SgGotoStatement::p_selector_expression>;
18340};
18342 using node = SgGotoStatement;
18343 using base = SgStatement;
18344 static constexpr char const * const name{"GotoStatement"};
18345 static constexpr unsigned long variant{451};
18346 static constexpr bool concrete{true};
18347 using subclasses_t = mp::List<>;
18349};
18350template <> struct node_from_variant_t<451> { using type = SgGotoStatement; };
18351
18352// Class: Graph
18353template <> struct describe_field_t<SgGraph,std::string,&SgGraph::p_name> {
18354 using parent = SgGraph;
18355 using field_type = std::string;
18356 static constexpr size_t position{0};
18357 static constexpr char const * const name{"name"};
18358 static constexpr char const * const typestr{"std::string"};
18359 static constexpr bool traverse{false};
18360 static constexpr auto mbr_ptr{&SgGraph::p_name};
18361 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18362 using bind = Desc<SgGraph, std::string SgGraph::*, &SgGraph::p_name>;
18363};
18364template <> struct describe_field_t<SgGraph,rose_graph_integer_node_hash_map,&SgGraph::p_node_index_to_node_map> {
18365 using parent = SgGraph;
18367 static constexpr size_t position{1};
18368 static constexpr char const * const name{"node_index_to_node_map"};
18369 static constexpr char const * const typestr{"rose_graph_integer_node_hash_map"};
18370 static constexpr bool traverse{false};
18371 static constexpr auto mbr_ptr{&SgGraph::p_node_index_to_node_map};
18372 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18373 using bind = Desc<SgGraph, rose_graph_integer_node_hash_map SgGraph::*, &SgGraph::p_node_index_to_node_map>;
18374};
18375template <> struct describe_field_t<SgGraph,rose_graph_integer_edge_hash_map,&SgGraph::p_edge_index_to_edge_map> {
18376 using parent = SgGraph;
18378 static constexpr size_t position{2};
18379 static constexpr char const * const name{"edge_index_to_edge_map"};
18380 static constexpr char const * const typestr{"rose_graph_integer_edge_hash_map"};
18381 static constexpr bool traverse{false};
18382 static constexpr auto mbr_ptr{&SgGraph::p_edge_index_to_edge_map};
18383 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18384 using bind = Desc<SgGraph, rose_graph_integer_edge_hash_map SgGraph::*, &SgGraph::p_edge_index_to_edge_map>;
18385};
18386template <> struct describe_field_t<SgGraph,rose_graph_integerpair_edge_hash_multimap,&SgGraph::p_node_index_pair_to_edge_multimap> {
18387 using parent = SgGraph;
18389 static constexpr size_t position{3};
18390 static constexpr char const * const name{"node_index_pair_to_edge_multimap"};
18391 static constexpr char const * const typestr{"rose_graph_integerpair_edge_hash_multimap"};
18392 static constexpr bool traverse{false};
18393 static constexpr auto mbr_ptr{&SgGraph::p_node_index_pair_to_edge_multimap};
18394 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18395 using bind = Desc<SgGraph, rose_graph_integerpair_edge_hash_multimap SgGraph::*, &SgGraph::p_node_index_pair_to_edge_multimap>;
18396};
18397template <> struct describe_field_t<SgGraph,rose_graph_string_integer_hash_multimap,&SgGraph::p_string_to_node_index_multimap> {
18398 using parent = SgGraph;
18400 static constexpr size_t position{4};
18401 static constexpr char const * const name{"string_to_node_index_multimap"};
18402 static constexpr char const * const typestr{"rose_graph_string_integer_hash_multimap"};
18403 static constexpr bool traverse{false};
18404 static constexpr auto mbr_ptr{&SgGraph::p_string_to_node_index_multimap};
18405 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18406 using bind = Desc<SgGraph, rose_graph_string_integer_hash_multimap SgGraph::*, &SgGraph::p_string_to_node_index_multimap>;
18407};
18408template <> struct describe_field_t<SgGraph,rose_graph_string_integer_hash_multimap,&SgGraph::p_string_to_edge_index_multimap> {
18409 using parent = SgGraph;
18411 static constexpr size_t position{5};
18412 static constexpr char const * const name{"string_to_edge_index_multimap"};
18413 static constexpr char const * const typestr{"rose_graph_string_integer_hash_multimap"};
18414 static constexpr bool traverse{false};
18415 static constexpr auto mbr_ptr{&SgGraph::p_string_to_edge_index_multimap};
18416 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18417 using bind = Desc<SgGraph, rose_graph_string_integer_hash_multimap SgGraph::*, &SgGraph::p_string_to_edge_index_multimap>;
18418};
18419template <> struct describe_field_t<SgGraph,rose_graph_integer_edge_hash_multimap,&SgGraph::p_node_index_to_edge_multimap> {
18420 using parent = SgGraph;
18422 static constexpr size_t position{6};
18423 static constexpr char const * const name{"node_index_to_edge_multimap"};
18424 static constexpr char const * const typestr{"rose_graph_integer_edge_hash_multimap"};
18425 static constexpr bool traverse{false};
18426 static constexpr auto mbr_ptr{&SgGraph::p_node_index_to_edge_multimap};
18427 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18428 using bind = Desc<SgGraph, rose_graph_integer_edge_hash_multimap SgGraph::*, &SgGraph::p_node_index_to_edge_multimap>;
18429};
18430template <> struct describe_field_t<SgGraph,int,&SgGraph::p_index> {
18431 using parent = SgGraph;
18432 using field_type = int;
18433 static constexpr size_t position{7};
18434 static constexpr char const * const name{"index"};
18435 static constexpr char const * const typestr{"int"};
18436 static constexpr bool traverse{false};
18437 static constexpr auto mbr_ptr{&SgGraph::p_index};
18438 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18439 using bind = Desc<SgGraph, int SgGraph::*, &SgGraph::p_index>;
18440};
18441template <> struct describe_field_t<SgGraph,SgBoostEdgeList,&SgGraph::p_boost_edges> {
18442 using parent = SgGraph;
18443 using field_type = SgBoostEdgeList;
18444 static constexpr size_t position{8};
18445 static constexpr char const * const name{"boost_edges"};
18446 static constexpr char const * const typestr{"SgBoostEdgeList"};
18447 static constexpr bool traverse{false};
18448 static constexpr auto mbr_ptr{&SgGraph::p_boost_edges};
18449 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18450 using bind = Desc<SgGraph, SgBoostEdgeList SgGraph::*, &SgGraph::p_boost_edges>;
18451};
18452template <> struct describe_field_t<SgGraph,SgBoostEdgeWeightList,&SgGraph::p_boost_edge_weights> {
18453 using parent = SgGraph;
18454 using field_type = SgBoostEdgeWeightList;
18455 static constexpr size_t position{9};
18456 static constexpr char const * const name{"boost_edge_weights"};
18457 static constexpr char const * const typestr{"SgBoostEdgeWeightList"};
18458 static constexpr bool traverse{false};
18459 static constexpr auto mbr_ptr{&SgGraph::p_boost_edge_weights};
18460 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18461 using bind = Desc<SgGraph, SgBoostEdgeWeightList SgGraph::*, &SgGraph::p_boost_edge_weights>;
18462};
18463template <> struct describe_field_t<SgGraph,AstAttributeMechanism*,&SgGraph::p_attributeMechanism> {
18464 using parent = SgGraph;
18466 static constexpr size_t position{10};
18467 static constexpr char const * const name{"attributeMechanism"};
18468 static constexpr char const * const typestr{"AstAttributeMechanism*"};
18469 static constexpr bool traverse{false};
18470 static constexpr auto mbr_ptr{&SgGraph::p_attributeMechanism};
18471 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18472 using bind = Desc<SgGraph, AstAttributeMechanism* SgGraph::*, &SgGraph::p_attributeMechanism>;
18473};
18474template <> struct describe_field_t<SgGraph,std::map<int, std::string>,&SgGraph::p_properties> {
18475 using parent = SgGraph;
18476 using field_type = std::map<int, std::string>;
18477 static constexpr size_t position{11};
18478 static constexpr char const * const name{"properties"};
18479 static constexpr char const * const typestr{"std::map<int, std::string>"};
18480 static constexpr bool traverse{false};
18481 static constexpr auto mbr_ptr{&SgGraph::p_properties};
18482 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18483 using bind = Desc<SgGraph, std::map<int, std::string> SgGraph::*, &SgGraph::p_properties>;
18484};
18494template <> struct node_from_variant_t<452> { using type = SgGraph; };
18495
18496// Class: GraphEdge
18497template <> struct describe_field_t<SgGraphEdge,SgGraphNode*,&SgGraphEdge::p_node_A> {
18498 using parent = SgGraphEdge;
18499 using field_type = SgGraphNode*;
18500 static constexpr size_t position{0};
18501 static constexpr char const * const name{"node_A"};
18502 static constexpr char const * const typestr{"SgGraphNode*"};
18503 static constexpr bool traverse{false};
18504 static constexpr auto mbr_ptr{&SgGraphEdge::p_node_A};
18505 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18506 using bind = Desc<SgGraphEdge, SgGraphNode* SgGraphEdge::*, &SgGraphEdge::p_node_A>;
18507};
18508template <> struct describe_field_t<SgGraphEdge,SgGraphNode*,&SgGraphEdge::p_node_B> {
18509 using parent = SgGraphEdge;
18510 using field_type = SgGraphNode*;
18511 static constexpr size_t position{1};
18512 static constexpr char const * const name{"node_B"};
18513 static constexpr char const * const typestr{"SgGraphNode*"};
18514 static constexpr bool traverse{false};
18515 static constexpr auto mbr_ptr{&SgGraphEdge::p_node_B};
18516 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18517 using bind = Desc<SgGraphEdge, SgGraphNode* SgGraphEdge::*, &SgGraphEdge::p_node_B>;
18518};
18519template <> struct describe_field_t<SgGraphEdge,std::string,&SgGraphEdge::p_name> {
18520 using parent = SgGraphEdge;
18521 using field_type = std::string;
18522 static constexpr size_t position{2};
18523 static constexpr char const * const name{"name"};
18524 static constexpr char const * const typestr{"std::string"};
18525 static constexpr bool traverse{false};
18526 static constexpr auto mbr_ptr{&SgGraphEdge::p_name};
18527 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18528 using bind = Desc<SgGraphEdge, std::string SgGraphEdge::*, &SgGraphEdge::p_name>;
18529};
18530template <> struct describe_field_t<SgGraphEdge,int,&SgGraphEdge::p_index> {
18531 using parent = SgGraphEdge;
18532 using field_type = int;
18533 static constexpr size_t position{3};
18534 static constexpr char const * const name{"index"};
18535 static constexpr char const * const typestr{"int"};
18536 static constexpr bool traverse{false};
18537 static constexpr auto mbr_ptr{&SgGraphEdge::p_index};
18538 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18539 using bind = Desc<SgGraphEdge, int SgGraphEdge::*, &SgGraphEdge::p_index>;
18540};
18541template <> struct describe_field_t<SgGraphEdge,AstAttributeMechanism*,&SgGraphEdge::p_attributeMechanism> {
18542 using parent = SgGraphEdge;
18544 static constexpr size_t position{4};
18545 static constexpr char const * const name{"attributeMechanism"};
18546 static constexpr char const * const typestr{"AstAttributeMechanism*"};
18547 static constexpr bool traverse{false};
18548 static constexpr auto mbr_ptr{&SgGraphEdge::p_attributeMechanism};
18549 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18550 using bind = Desc<SgGraphEdge, AstAttributeMechanism* SgGraphEdge::*, &SgGraphEdge::p_attributeMechanism>;
18551};
18552template <> struct describe_field_t<SgGraphEdge,std::map<int, std::string>,&SgGraphEdge::p_properties> {
18553 using parent = SgGraphEdge;
18554 using field_type = std::map<int, std::string>;
18555 static constexpr size_t position{5};
18556 static constexpr char const * const name{"properties"};
18557 static constexpr char const * const typestr{"std::map<int, std::string>"};
18558 static constexpr bool traverse{false};
18559 static constexpr auto mbr_ptr{&SgGraphEdge::p_properties};
18560 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18561 using bind = Desc<SgGraphEdge, std::map<int, std::string> SgGraphEdge::*, &SgGraphEdge::p_properties>;
18562};
18572template <> struct node_from_variant_t<453> { using type = SgGraphEdge; };
18573
18574// Class: GraphEdgeList
18576 using node = SgGraphEdgeList;
18577 using base = SgSupport;
18578 static constexpr char const * const name{"GraphEdgeList"};
18579 static constexpr unsigned long variant{454};
18580 static constexpr bool concrete{true};
18581 using subclasses_t = mp::List<>;
18582 using fields_t = mp::List<>;
18583};
18584template <> struct node_from_variant_t<454> { using type = SgGraphEdgeList; };
18585
18586// Class: GraphNode
18587template <> struct describe_field_t<SgGraphNode,std::string,&SgGraphNode::p_name> {
18588 using parent = SgGraphNode;
18589 using field_type = std::string;
18590 static constexpr size_t position{0};
18591 static constexpr char const * const name{"name"};
18592 static constexpr char const * const typestr{"std::string"};
18593 static constexpr bool traverse{false};
18594 static constexpr auto mbr_ptr{&SgGraphNode::p_name};
18595 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18596 using bind = Desc<SgGraphNode, std::string SgGraphNode::*, &SgGraphNode::p_name>;
18597};
18598template <> struct describe_field_t<SgGraphNode,SgNode*,&SgGraphNode::p_SgNode> {
18599 using parent = SgGraphNode;
18600 using field_type = SgNode*;
18601 static constexpr size_t position{1};
18602 static constexpr char const * const name{"SgNode"};
18603 static constexpr char const * const typestr{"SgNode*"};
18604 static constexpr bool traverse{false};
18605 static constexpr auto mbr_ptr{&SgGraphNode::p_SgNode};
18606 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18607 using bind = Desc<SgGraphNode, SgNode* SgGraphNode::*, &SgGraphNode::p_SgNode>;
18608};
18609template <> struct describe_field_t<SgGraphNode,int,&SgGraphNode::p_index> {
18610 using parent = SgGraphNode;
18611 using field_type = int;
18612 static constexpr size_t position{2};
18613 static constexpr char const * const name{"index"};
18614 static constexpr char const * const typestr{"int"};
18615 static constexpr bool traverse{false};
18616 static constexpr auto mbr_ptr{&SgGraphNode::p_index};
18617 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18618 using bind = Desc<SgGraphNode, int SgGraphNode::*, &SgGraphNode::p_index>;
18619};
18620template <> struct describe_field_t<SgGraphNode,AstAttributeMechanism*,&SgGraphNode::p_attributeMechanism> {
18621 using parent = SgGraphNode;
18623 static constexpr size_t position{3};
18624 static constexpr char const * const name{"attributeMechanism"};
18625 static constexpr char const * const typestr{"AstAttributeMechanism*"};
18626 static constexpr bool traverse{false};
18627 static constexpr auto mbr_ptr{&SgGraphNode::p_attributeMechanism};
18628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18629 using bind = Desc<SgGraphNode, AstAttributeMechanism* SgGraphNode::*, &SgGraphNode::p_attributeMechanism>;
18630};
18631template <> struct describe_field_t<SgGraphNode,std::map<int, std::string>,&SgGraphNode::p_properties> {
18632 using parent = SgGraphNode;
18633 using field_type = std::map<int, std::string>;
18634 static constexpr size_t position{4};
18635 static constexpr char const * const name{"properties"};
18636 static constexpr char const * const typestr{"std::map<int, std::string>"};
18637 static constexpr bool traverse{false};
18638 static constexpr auto mbr_ptr{&SgGraphNode::p_properties};
18639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18640 using bind = Desc<SgGraphNode, std::map<int, std::string> SgGraphNode::*, &SgGraphNode::p_properties>;
18641};
18642template <> struct describe_node_t<SgGraphNode> {
18643 using node = SgGraphNode;
18644 using base = SgSupport;
18645 static constexpr char const * const name{"GraphNode"};
18646 static constexpr unsigned long variant{455};
18647 static constexpr bool concrete{true};
18648 using subclasses_t = mp::List<>;
18650};
18651template <> struct node_from_variant_t<455> { using type = SgGraphNode; };
18652
18653// Class: GraphNodeList
18655 using node = SgGraphNodeList;
18656 using base = SgSupport;
18657 static constexpr char const * const name{"GraphNodeList"};
18658 static constexpr unsigned long variant{456};
18659 static constexpr bool concrete{true};
18660 using subclasses_t = mp::List<>;
18661 using fields_t = mp::List<>;
18662};
18663template <> struct node_from_variant_t<456> { using type = SgGraphNodeList; };
18664
18665// Class: GreaterOrEqualOp
18667 using node = SgGreaterOrEqualOp;
18668 using base = SgBinaryOp;
18669 static constexpr char const * const name{"GreaterOrEqualOp"};
18670 static constexpr unsigned long variant{457};
18671 static constexpr bool concrete{true};
18672 using subclasses_t = mp::List<>;
18673 using fields_t = mp::List<>;
18674};
18675template <> struct node_from_variant_t<457> { using type = SgGreaterOrEqualOp; };
18676
18677// Class: GreaterThanOp
18679 using node = SgGreaterThanOp;
18680 using base = SgBinaryOp;
18681 static constexpr char const * const name{"GreaterThanOp"};
18682 static constexpr unsigned long variant{458};
18683 static constexpr bool concrete{true};
18684 using subclasses_t = mp::List<>;
18685 using fields_t = mp::List<>;
18686};
18687template <> struct node_from_variant_t<458> { using type = SgGreaterThanOp; };
18688
18689// Class: IOItemExpression
18690template <> struct describe_field_t<SgIOItemExpression,SgName,&SgIOItemExpression::p_name> {
18691 using parent = SgIOItemExpression;
18692 using field_type = SgName;
18693 static constexpr size_t position{0};
18694 static constexpr char const * const name{"name"};
18695 static constexpr char const * const typestr{"SgName"};
18696 static constexpr bool traverse{false};
18697 static constexpr auto mbr_ptr{&SgIOItemExpression::p_name};
18698 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18699 using bind = Desc<SgIOItemExpression, SgName SgIOItemExpression::*, &SgIOItemExpression::p_name>;
18700};
18701template <> struct describe_field_t<SgIOItemExpression,SgExpression*,&SgIOItemExpression::p_io_item> {
18702 using parent = SgIOItemExpression;
18703 using field_type = SgExpression*;
18704 static constexpr size_t position{1};
18705 static constexpr char const * const name{"io_item"};
18706 static constexpr char const * const typestr{"SgExpression*"};
18707 static constexpr bool traverse{true};
18708 static constexpr auto mbr_ptr{&SgIOItemExpression::p_io_item};
18709 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18710 using bind = Desc<SgIOItemExpression, SgExpression* SgIOItemExpression::*, &SgIOItemExpression::p_io_item>;
18711};
18713 using node = SgIOItemExpression;
18714 using base = SgExpression;
18715 static constexpr char const * const name{"IOItemExpression"};
18716 static constexpr unsigned long variant{459};
18717 static constexpr bool concrete{true};
18718 using subclasses_t = mp::List<>;
18720};
18721template <> struct node_from_variant_t<459> { using type = SgIOItemExpression; };
18722
18723// Class: IOStatement
18724template <> struct describe_field_t<SgIOStatement,SgIOStatement::io_statement_enum,&SgIOStatement::p_io_statement> {
18725 using parent = SgIOStatement;
18727 static constexpr size_t position{0};
18728 static constexpr char const * const name{"io_statement"};
18729 static constexpr char const * const typestr{"SgIOStatement::io_statement_enum"};
18730 static constexpr bool traverse{false};
18731 static constexpr auto mbr_ptr{&SgIOStatement::p_io_statement};
18732 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18733 using bind = Desc<SgIOStatement, SgIOStatement::io_statement_enum SgIOStatement::*, &SgIOStatement::p_io_statement>;
18734};
18735template <> struct describe_field_t<SgIOStatement,SgExprListExp*,&SgIOStatement::p_io_stmt_list> {
18736 using parent = SgIOStatement;
18737 using field_type = SgExprListExp*;
18738 static constexpr size_t position{1};
18739 static constexpr char const * const name{"io_stmt_list"};
18740 static constexpr char const * const typestr{"SgExprListExp*"};
18741 static constexpr bool traverse{true};
18742 static constexpr auto mbr_ptr{&SgIOStatement::p_io_stmt_list};
18743 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18744 using bind = Desc<SgIOStatement, SgExprListExp* SgIOStatement::*, &SgIOStatement::p_io_stmt_list>;
18745};
18746template <> struct describe_field_t<SgIOStatement,SgExpression*,&SgIOStatement::p_unit> {
18747 using parent = SgIOStatement;
18748 using field_type = SgExpression*;
18749 static constexpr size_t position{2};
18750 static constexpr char const * const name{"unit"};
18751 static constexpr char const * const typestr{"SgExpression*"};
18752 static constexpr bool traverse{true};
18753 static constexpr auto mbr_ptr{&SgIOStatement::p_unit};
18754 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18755 using bind = Desc<SgIOStatement, SgExpression* SgIOStatement::*, &SgIOStatement::p_unit>;
18756};
18757template <> struct describe_field_t<SgIOStatement,SgExpression*,&SgIOStatement::p_iostat> {
18758 using parent = SgIOStatement;
18759 using field_type = SgExpression*;
18760 static constexpr size_t position{3};
18761 static constexpr char const * const name{"iostat"};
18762 static constexpr char const * const typestr{"SgExpression*"};
18763 static constexpr bool traverse{true};
18764 static constexpr auto mbr_ptr{&SgIOStatement::p_iostat};
18765 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18766 using bind = Desc<SgIOStatement, SgExpression* SgIOStatement::*, &SgIOStatement::p_iostat>;
18767};
18768template <> struct describe_field_t<SgIOStatement,SgExpression*,&SgIOStatement::p_err> {
18769 using parent = SgIOStatement;
18770 using field_type = SgExpression*;
18771 static constexpr size_t position{4};
18772 static constexpr char const * const name{"err"};
18773 static constexpr char const * const typestr{"SgExpression*"};
18774 static constexpr bool traverse{true};
18775 static constexpr auto mbr_ptr{&SgIOStatement::p_err};
18776 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18777 using bind = Desc<SgIOStatement, SgExpression* SgIOStatement::*, &SgIOStatement::p_err>;
18778};
18779template <> struct describe_field_t<SgIOStatement,SgExpression*,&SgIOStatement::p_iomsg> {
18780 using parent = SgIOStatement;
18781 using field_type = SgExpression*;
18782 static constexpr size_t position{5};
18783 static constexpr char const * const name{"iomsg"};
18784 static constexpr char const * const typestr{"SgExpression*"};
18785 static constexpr bool traverse{true};
18786 static constexpr auto mbr_ptr{&SgIOStatement::p_iomsg};
18787 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18788 using bind = Desc<SgIOStatement, SgExpression* SgIOStatement::*, &SgIOStatement::p_iomsg>;
18789};
18799template <> struct node_from_variant_t<460> { using type = SgIOStatement; };
18800
18801// Class: IdentDirectiveStatement
18805 static constexpr char const * const name{"IdentDirectiveStatement"};
18806 static constexpr unsigned long variant{461};
18807 static constexpr bool concrete{true};
18808 using subclasses_t = mp::List<>;
18809 using fields_t = mp::List<>;
18810};
18811template <> struct node_from_variant_t<461> { using type = SgIdentDirectiveStatement; };
18812
18813// Class: IfDirectiveStatement
18817 static constexpr char const * const name{"IfDirectiveStatement"};
18818 static constexpr unsigned long variant{462};
18819 static constexpr bool concrete{true};
18820 using subclasses_t = mp::List<>;
18821 using fields_t = mp::List<>;
18822};
18823template <> struct node_from_variant_t<462> { using type = SgIfDirectiveStatement; };
18824
18825// Class: IfStmt
18827 using parent = SgIfStmt;
18828 using field_type = SgStatement*;
18829 static constexpr size_t position{0};
18830 static constexpr char const * const name{"conditional"};
18831 static constexpr char const * const typestr{"SgStatement*"};
18832 static constexpr bool traverse{true};
18833 static constexpr auto mbr_ptr{&SgIfStmt::p_conditional};
18834 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18835 using bind = Desc<SgIfStmt, SgStatement* SgIfStmt::*, &SgIfStmt::p_conditional>;
18836};
18838 using parent = SgIfStmt;
18839 using field_type = SgStatement*;
18840 static constexpr size_t position{1};
18841 static constexpr char const * const name{"true_body"};
18842 static constexpr char const * const typestr{"SgStatement*"};
18843 static constexpr bool traverse{true};
18844 static constexpr auto mbr_ptr{&SgIfStmt::p_true_body};
18845 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18846 using bind = Desc<SgIfStmt, SgStatement* SgIfStmt::*, &SgIfStmt::p_true_body>;
18847};
18849 using parent = SgIfStmt;
18850 using field_type = SgStatement*;
18851 static constexpr size_t position{2};
18852 static constexpr char const * const name{"false_body"};
18853 static constexpr char const * const typestr{"SgStatement*"};
18854 static constexpr bool traverse{true};
18855 static constexpr auto mbr_ptr{&SgIfStmt::p_false_body};
18856 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18857 using bind = Desc<SgIfStmt, SgStatement* SgIfStmt::*, &SgIfStmt::p_false_body>;
18858};
18859template <> struct describe_field_t<SgIfStmt,bool,&SgIfStmt::p_is_if_constexpr_statement> {
18860 using parent = SgIfStmt;
18861 using field_type = bool;
18862 static constexpr size_t position{3};
18863 static constexpr char const * const name{"is_if_constexpr_statement"};
18864 static constexpr char const * const typestr{"bool"};
18865 static constexpr bool traverse{false};
18866 static constexpr auto mbr_ptr{&SgIfStmt::p_is_if_constexpr_statement};
18867 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18868 using bind = Desc<SgIfStmt, bool SgIfStmt::*, &SgIfStmt::p_is_if_constexpr_statement>;
18869};
18870template <> struct describe_field_t<SgIfStmt,bool,&SgIfStmt::p_if_constexpr_value_known> {
18871 using parent = SgIfStmt;
18872 using field_type = bool;
18873 static constexpr size_t position{4};
18874 static constexpr char const * const name{"if_constexpr_value_known"};
18875 static constexpr char const * const typestr{"bool"};
18876 static constexpr bool traverse{false};
18877 static constexpr auto mbr_ptr{&SgIfStmt::p_if_constexpr_value_known};
18878 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18879 using bind = Desc<SgIfStmt, bool SgIfStmt::*, &SgIfStmt::p_if_constexpr_value_known>;
18880};
18881template <> struct describe_field_t<SgIfStmt,bool,&SgIfStmt::p_if_constexpr_value> {
18882 using parent = SgIfStmt;
18883 using field_type = bool;
18884 static constexpr size_t position{5};
18885 static constexpr char const * const name{"if_constexpr_value"};
18886 static constexpr char const * const typestr{"bool"};
18887 static constexpr bool traverse{false};
18888 static constexpr auto mbr_ptr{&SgIfStmt::p_if_constexpr_value};
18889 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18890 using bind = Desc<SgIfStmt, bool SgIfStmt::*, &SgIfStmt::p_if_constexpr_value>;
18891};
18892template <> struct describe_field_t<SgIfStmt,SgLabelRefExp*,&SgIfStmt::p_else_numeric_label> {
18893 using parent = SgIfStmt;
18894 using field_type = SgLabelRefExp*;
18895 static constexpr size_t position{6};
18896 static constexpr char const * const name{"else_numeric_label"};
18897 static constexpr char const * const typestr{"SgLabelRefExp*"};
18898 static constexpr bool traverse{false};
18899 static constexpr auto mbr_ptr{&SgIfStmt::p_else_numeric_label};
18900 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18901 using bind = Desc<SgIfStmt, SgLabelRefExp* SgIfStmt::*, &SgIfStmt::p_else_numeric_label>;
18902};
18903template <> struct describe_field_t<SgIfStmt,std::string,&SgIfStmt::p_string_label> {
18904 using parent = SgIfStmt;
18905 using field_type = std::string;
18906 static constexpr size_t position{7};
18907 static constexpr char const * const name{"string_label"};
18908 static constexpr char const * const typestr{"std::string"};
18909 static constexpr bool traverse{false};
18910 static constexpr auto mbr_ptr{&SgIfStmt::p_string_label};
18911 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18912 using bind = Desc<SgIfStmt, std::string SgIfStmt::*, &SgIfStmt::p_string_label>;
18913};
18914template <> struct describe_field_t<SgIfStmt,SgLabelRefExp*,&SgIfStmt::p_end_numeric_label> {
18915 using parent = SgIfStmt;
18916 using field_type = SgLabelRefExp*;
18917 static constexpr size_t position{8};
18918 static constexpr char const * const name{"end_numeric_label"};
18919 static constexpr char const * const typestr{"SgLabelRefExp*"};
18920 static constexpr bool traverse{false};
18921 static constexpr auto mbr_ptr{&SgIfStmt::p_end_numeric_label};
18922 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18923 using bind = Desc<SgIfStmt, SgLabelRefExp* SgIfStmt::*, &SgIfStmt::p_end_numeric_label>;
18924};
18925template <> struct describe_field_t<SgIfStmt,bool,&SgIfStmt::p_has_end_statement> {
18926 using parent = SgIfStmt;
18927 using field_type = bool;
18928 static constexpr size_t position{9};
18929 static constexpr char const * const name{"has_end_statement"};
18930 static constexpr char const * const typestr{"bool"};
18931 static constexpr bool traverse{false};
18932 static constexpr auto mbr_ptr{&SgIfStmt::p_has_end_statement};
18933 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18934 using bind = Desc<SgIfStmt, bool SgIfStmt::*, &SgIfStmt::p_has_end_statement>;
18935};
18936template <> struct describe_field_t<SgIfStmt,bool,&SgIfStmt::p_use_then_keyword> {
18937 using parent = SgIfStmt;
18938 using field_type = bool;
18939 static constexpr size_t position{10};
18940 static constexpr char const * const name{"use_then_keyword"};
18941 static constexpr char const * const typestr{"bool"};
18942 static constexpr bool traverse{false};
18943 static constexpr auto mbr_ptr{&SgIfStmt::p_use_then_keyword};
18944 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18945 using bind = Desc<SgIfStmt, bool SgIfStmt::*, &SgIfStmt::p_use_then_keyword>;
18946};
18947template <> struct describe_field_t<SgIfStmt,bool,&SgIfStmt::p_is_else_if_statement> {
18948 using parent = SgIfStmt;
18949 using field_type = bool;
18950 static constexpr size_t position{11};
18951 static constexpr char const * const name{"is_else_if_statement"};
18952 static constexpr char const * const typestr{"bool"};
18953 static constexpr bool traverse{false};
18954 static constexpr auto mbr_ptr{&SgIfStmt::p_is_else_if_statement};
18955 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
18956 using bind = Desc<SgIfStmt, bool SgIfStmt::*, &SgIfStmt::p_is_else_if_statement>;
18957};
18967template <> struct node_from_variant_t<463> { using type = SgIfStmt; };
18968
18969// Class: IfdefDirectiveStatement
18973 static constexpr char const * const name{"IfdefDirectiveStatement"};
18974 static constexpr unsigned long variant{464};
18975 static constexpr bool concrete{true};
18976 using subclasses_t = mp::List<>;
18977 using fields_t = mp::List<>;
18978};
18979template <> struct node_from_variant_t<464> { using type = SgIfdefDirectiveStatement; };
18980
18981// Class: IfndefDirectiveStatement
18985 static constexpr char const * const name{"IfndefDirectiveStatement"};
18986 static constexpr unsigned long variant{465};
18987 static constexpr bool concrete{true};
18988 using subclasses_t = mp::List<>;
18989 using fields_t = mp::List<>;
18990};
18991template <> struct node_from_variant_t<465> { using type = SgIfndefDirectiveStatement; };
18992
18993// Class: ImageControlStatement
18994template <> struct describe_field_t<SgImageControlStatement,SgImageControlStatement::image_control_statement_enum,&SgImageControlStatement::p_image_control_statement> {
18997 static constexpr size_t position{0};
18998 static constexpr char const * const name{"image_control_statement"};
18999 static constexpr char const * const typestr{"SgImageControlStatement::image_control_statement_enum"};
19000 static constexpr bool traverse{false};
19001 static constexpr auto mbr_ptr{&SgImageControlStatement::p_image_control_statement};
19002 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19003 using bind = Desc<SgImageControlStatement, SgImageControlStatement::image_control_statement_enum SgImageControlStatement::*, &SgImageControlStatement::p_image_control_statement>;
19004};
19005template <> struct describe_field_t<SgImageControlStatement,SgExpression*,&SgImageControlStatement::p_stat> {
19007 using field_type = SgExpression*;
19008 static constexpr size_t position{1};
19009 static constexpr char const * const name{"stat"};
19010 static constexpr char const * const typestr{"SgExpression*"};
19011 static constexpr bool traverse{true};
19012 static constexpr auto mbr_ptr{&SgImageControlStatement::p_stat};
19013 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19014 using bind = Desc<SgImageControlStatement, SgExpression* SgImageControlStatement::*, &SgImageControlStatement::p_stat>;
19015};
19016template <> struct describe_field_t<SgImageControlStatement,SgExpression*,&SgImageControlStatement::p_err_msg> {
19018 using field_type = SgExpression*;
19019 static constexpr size_t position{2};
19020 static constexpr char const * const name{"err_msg"};
19021 static constexpr char const * const typestr{"SgExpression*"};
19022 static constexpr bool traverse{true};
19023 static constexpr auto mbr_ptr{&SgImageControlStatement::p_err_msg};
19024 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19025 using bind = Desc<SgImageControlStatement, SgExpression* SgImageControlStatement::*, &SgImageControlStatement::p_err_msg>;
19026};
19027template <> struct describe_field_t<SgImageControlStatement,SgExpression*,&SgImageControlStatement::p_acquired_lock> {
19029 using field_type = SgExpression*;
19030 static constexpr size_t position{3};
19031 static constexpr char const * const name{"acquired_lock"};
19032 static constexpr char const * const typestr{"SgExpression*"};
19033 static constexpr bool traverse{true};
19034 static constexpr auto mbr_ptr{&SgImageControlStatement::p_acquired_lock};
19035 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19036 using bind = Desc<SgImageControlStatement, SgExpression* SgImageControlStatement::*, &SgImageControlStatement::p_acquired_lock>;
19037};
19047template <> struct node_from_variant_t<466> { using type = SgImageControlStatement; };
19048
19049// Class: ImagPartOp
19050template <> struct describe_node_t<SgImagPartOp> {
19051 using node = SgImagPartOp;
19052 using base = SgUnaryOp;
19053 static constexpr char const * const name{"ImagPartOp"};
19054 static constexpr unsigned long variant{467};
19055 static constexpr bool concrete{true};
19056 using subclasses_t = mp::List<>;
19057 using fields_t = mp::List<>;
19058};
19059template <> struct node_from_variant_t<467> { using type = SgImagPartOp; };
19060
19061// Class: ImplicitStatement
19062template <> struct describe_field_t<SgImplicitStatement,bool,&SgImplicitStatement::p_implicit_none> {
19064 using field_type = bool;
19065 static constexpr size_t position{0};
19066 static constexpr char const * const name{"implicit_none"};
19067 static constexpr char const * const typestr{"bool"};
19068 static constexpr bool traverse{false};
19069 static constexpr auto mbr_ptr{&SgImplicitStatement::p_implicit_none};
19070 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19071 using bind = Desc<SgImplicitStatement, bool SgImplicitStatement::*, &SgImplicitStatement::p_implicit_none>;
19072};
19073template <> struct describe_field_t<SgImplicitStatement,SgImplicitStatement::implicit_spec_enum,&SgImplicitStatement::p_implicit_spec> {
19076 static constexpr size_t position{1};
19077 static constexpr char const * const name{"implicit_spec"};
19078 static constexpr char const * const typestr{"SgImplicitStatement::implicit_spec_enum"};
19079 static constexpr bool traverse{false};
19080 static constexpr auto mbr_ptr{&SgImplicitStatement::p_implicit_spec};
19081 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19082 using bind = Desc<SgImplicitStatement, SgImplicitStatement::implicit_spec_enum SgImplicitStatement::*, &SgImplicitStatement::p_implicit_spec>;
19083};
19084template <> struct describe_field_t<SgImplicitStatement,SgInitializedNamePtrList,&SgImplicitStatement::p_variables> {
19086 using field_type = SgInitializedNamePtrList;
19087 static constexpr size_t position{2};
19088 static constexpr char const * const name{"variables"};
19089 static constexpr char const * const typestr{"SgInitializedNamePtrList"};
19090 static constexpr bool traverse{true};
19091 static constexpr auto mbr_ptr{&SgImplicitStatement::p_variables};
19092 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19093 using bind = Desc<SgImplicitStatement, SgInitializedNamePtrList SgImplicitStatement::*, &SgImplicitStatement::p_variables>;
19094};
19104template <> struct node_from_variant_t<468> { using type = SgImplicitStatement; };
19105
19106// Class: ImpliedDo
19107template <> struct describe_field_t<SgImpliedDo,SgExpression*,&SgImpliedDo::p_do_var_initialization> {
19108 using parent = SgImpliedDo;
19109 using field_type = SgExpression*;
19110 static constexpr size_t position{0};
19111 static constexpr char const * const name{"do_var_initialization"};
19112 static constexpr char const * const typestr{"SgExpression*"};
19113 static constexpr bool traverse{true};
19114 static constexpr auto mbr_ptr{&SgImpliedDo::p_do_var_initialization};
19115 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19116 using bind = Desc<SgImpliedDo, SgExpression* SgImpliedDo::*, &SgImpliedDo::p_do_var_initialization>;
19117};
19118template <> struct describe_field_t<SgImpliedDo,SgExpression*,&SgImpliedDo::p_last_val> {
19119 using parent = SgImpliedDo;
19120 using field_type = SgExpression*;
19121 static constexpr size_t position{1};
19122 static constexpr char const * const name{"last_val"};
19123 static constexpr char const * const typestr{"SgExpression*"};
19124 static constexpr bool traverse{true};
19125 static constexpr auto mbr_ptr{&SgImpliedDo::p_last_val};
19126 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19127 using bind = Desc<SgImpliedDo, SgExpression* SgImpliedDo::*, &SgImpliedDo::p_last_val>;
19128};
19129template <> struct describe_field_t<SgImpliedDo,SgExpression*,&SgImpliedDo::p_increment> {
19130 using parent = SgImpliedDo;
19131 using field_type = SgExpression*;
19132 static constexpr size_t position{2};
19133 static constexpr char const * const name{"increment"};
19134 static constexpr char const * const typestr{"SgExpression*"};
19135 static constexpr bool traverse{true};
19136 static constexpr auto mbr_ptr{&SgImpliedDo::p_increment};
19137 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19138 using bind = Desc<SgImpliedDo, SgExpression* SgImpliedDo::*, &SgImpliedDo::p_increment>;
19139};
19140template <> struct describe_field_t<SgImpliedDo,SgExprListExp*,&SgImpliedDo::p_object_list> {
19141 using parent = SgImpliedDo;
19142 using field_type = SgExprListExp*;
19143 static constexpr size_t position{3};
19144 static constexpr char const * const name{"object_list"};
19145 static constexpr char const * const typestr{"SgExprListExp*"};
19146 static constexpr bool traverse{true};
19147 static constexpr auto mbr_ptr{&SgImpliedDo::p_object_list};
19148 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19149 using bind = Desc<SgImpliedDo, SgExprListExp* SgImpliedDo::*, &SgImpliedDo::p_object_list>;
19150};
19151template <> struct describe_field_t<SgImpliedDo,SgScopeStatement*,&SgImpliedDo::p_implied_do_scope> {
19152 using parent = SgImpliedDo;
19154 static constexpr size_t position{4};
19155 static constexpr char const * const name{"implied_do_scope"};
19156 static constexpr char const * const typestr{"SgScopeStatement*"};
19157 static constexpr bool traverse{false};
19158 static constexpr auto mbr_ptr{&SgImpliedDo::p_implied_do_scope};
19159 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19160 using bind = Desc<SgImpliedDo, SgScopeStatement* SgImpliedDo::*, &SgImpliedDo::p_implied_do_scope>;
19161};
19171template <> struct node_from_variant_t<469> { using type = SgImpliedDo; };
19172
19173// Class: ImportStatement
19174template <> struct describe_field_t<SgImportStatement,SgExpressionPtrList,&SgImportStatement::p_import_list> {
19175 using parent = SgImportStatement;
19176 using field_type = SgExpressionPtrList;
19177 static constexpr size_t position{0};
19178 static constexpr char const * const name{"import_list"};
19179 static constexpr char const * const typestr{"SgExpressionPtrList"};
19180 static constexpr bool traverse{false};
19181 static constexpr auto mbr_ptr{&SgImportStatement::p_import_list};
19182 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19183 using bind = Desc<SgImportStatement, SgExpressionPtrList SgImportStatement::*, &SgImportStatement::p_import_list>;
19184};
19186 using node = SgImportStatement;
19188 static constexpr char const * const name{"ImportStatement"};
19189 static constexpr unsigned long variant{470};
19190 static constexpr bool concrete{true};
19191 using subclasses_t = mp::List<>;
19193};
19194template <> struct node_from_variant_t<470> { using type = SgImportStatement; };
19195
19196// Class: IncidenceDirectedGraph
19197template <> struct describe_field_t<SgIncidenceDirectedGraph,rose_graph_integer_edge_hash_multimap,&SgIncidenceDirectedGraph::p_node_index_to_edge_multimap_edgesOut> {
19200 static constexpr size_t position{0};
19201 static constexpr char const * const name{"node_index_to_edge_multimap_edgesOut"};
19202 static constexpr char const * const typestr{"rose_graph_integer_edge_hash_multimap"};
19203 static constexpr bool traverse{false};
19204 static constexpr auto mbr_ptr{&SgIncidenceDirectedGraph::p_node_index_to_edge_multimap_edgesOut};
19205 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19206 using bind = Desc<SgIncidenceDirectedGraph, rose_graph_integer_edge_hash_multimap SgIncidenceDirectedGraph::*, &SgIncidenceDirectedGraph::p_node_index_to_edge_multimap_edgesOut>;
19207};
19208template <> struct describe_field_t<SgIncidenceDirectedGraph,rose_graph_integer_edge_hash_multimap,&SgIncidenceDirectedGraph::p_node_index_to_edge_multimap_edgesIn> {
19211 static constexpr size_t position{1};
19212 static constexpr char const * const name{"node_index_to_edge_multimap_edgesIn"};
19213 static constexpr char const * const typestr{"rose_graph_integer_edge_hash_multimap"};
19214 static constexpr bool traverse{false};
19215 static constexpr auto mbr_ptr{&SgIncidenceDirectedGraph::p_node_index_to_edge_multimap_edgesIn};
19216 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19217 using bind = Desc<SgIncidenceDirectedGraph, rose_graph_integer_edge_hash_multimap SgIncidenceDirectedGraph::*, &SgIncidenceDirectedGraph::p_node_index_to_edge_multimap_edgesIn>;
19218};
19228template <> struct node_from_variant_t<471> { using type = SgIncidenceDirectedGraph; };
19229
19230// Class: IncidenceUndirectedGraph
19233 using base = SgGraph;
19234 static constexpr char const * const name{"IncidenceUndirectedGraph"};
19235 static constexpr unsigned long variant{472};
19236 static constexpr bool concrete{true};
19237 using subclasses_t = mp::List<>;
19238 using fields_t = mp::List<>;
19239};
19240template <> struct node_from_variant_t<472> { using type = SgIncidenceUndirectedGraph; };
19241
19242// Class: IncludeDirectiveStatement
19243template <> struct describe_field_t<SgIncludeDirectiveStatement,SgHeaderFileBody*,&SgIncludeDirectiveStatement::p_headerFileBody> {
19246 static constexpr size_t position{0};
19247 static constexpr char const * const name{"headerFileBody"};
19248 static constexpr char const * const typestr{"SgHeaderFileBody*"};
19249 static constexpr bool traverse{true};
19250 static constexpr auto mbr_ptr{&SgIncludeDirectiveStatement::p_headerFileBody};
19251 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19252 using bind = Desc<SgIncludeDirectiveStatement, SgHeaderFileBody* SgIncludeDirectiveStatement::*, &SgIncludeDirectiveStatement::p_headerFileBody>;
19253};
19254template <> struct describe_field_t<SgIncludeDirectiveStatement,SgIncludeFile*,&SgIncludeDirectiveStatement::p_include_file_heirarchy> {
19256 using field_type = SgIncludeFile*;
19257 static constexpr size_t position{1};
19258 static constexpr char const * const name{"include_file_heirarchy"};
19259 static constexpr char const * const typestr{"SgIncludeFile*"};
19260 static constexpr bool traverse{false};
19261 static constexpr auto mbr_ptr{&SgIncludeDirectiveStatement::p_include_file_heirarchy};
19262 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19263 using bind = Desc<SgIncludeDirectiveStatement, SgIncludeFile* SgIncludeDirectiveStatement::*, &SgIncludeDirectiveStatement::p_include_file_heirarchy>;
19264};
19265template <> struct describe_field_t<SgIncludeDirectiveStatement,std::string,&SgIncludeDirectiveStatement::p_name_used_in_include_directive> {
19267 using field_type = std::string;
19268 static constexpr size_t position{2};
19269 static constexpr char const * const name{"name_used_in_include_directive"};
19270 static constexpr char const * const typestr{"std::string"};
19271 static constexpr bool traverse{false};
19272 static constexpr auto mbr_ptr{&SgIncludeDirectiveStatement::p_name_used_in_include_directive};
19273 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19274 using bind = Desc<SgIncludeDirectiveStatement, std::string SgIncludeDirectiveStatement::*, &SgIncludeDirectiveStatement::p_name_used_in_include_directive>;
19275};
19285template <> struct node_from_variant_t<473> { using type = SgIncludeDirectiveStatement; };
19286
19287// Class: IncludeFile
19288template <> struct describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_filename> {
19289 using parent = SgIncludeFile;
19290 using field_type = SgName;
19291 static constexpr size_t position{0};
19292 static constexpr char const * const name{"filename"};
19293 static constexpr char const * const typestr{"SgName"};
19294 static constexpr bool traverse{false};
19295 static constexpr auto mbr_ptr{&SgIncludeFile::p_filename};
19296 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19297 using bind = Desc<SgIncludeFile, SgName SgIncludeFile::*, &SgIncludeFile::p_filename>;
19298};
19299template <> struct describe_field_t<SgIncludeFile,SgSourceFile*,&SgIncludeFile::p_source_file> {
19300 using parent = SgIncludeFile;
19301 using field_type = SgSourceFile*;
19302 static constexpr size_t position{1};
19303 static constexpr char const * const name{"source_file"};
19304 static constexpr char const * const typestr{"SgSourceFile*"};
19305 static constexpr bool traverse{false};
19306 static constexpr auto mbr_ptr{&SgIncludeFile::p_source_file};
19307 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19308 using bind = Desc<SgIncludeFile, SgSourceFile* SgIncludeFile::*, &SgIncludeFile::p_source_file>;
19309};
19310template <> struct describe_field_t<SgIncludeFile,SgIncludeFilePtrList,&SgIncludeFile::p_include_file_list> {
19311 using parent = SgIncludeFile;
19312 using field_type = SgIncludeFilePtrList;
19313 static constexpr size_t position{2};
19314 static constexpr char const * const name{"include_file_list"};
19315 static constexpr char const * const typestr{"SgIncludeFilePtrList"};
19316 static constexpr bool traverse{true};
19317 static constexpr auto mbr_ptr{&SgIncludeFile::p_include_file_list};
19318 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19319 using bind = Desc<SgIncludeFile, SgIncludeFilePtrList SgIncludeFile::*, &SgIncludeFile::p_include_file_list>;
19320};
19321template <> struct describe_field_t<SgIncludeFile,unsigned int,&SgIncludeFile::p_first_source_sequence_number> {
19322 using parent = SgIncludeFile;
19323 using field_type = unsigned int;
19324 static constexpr size_t position{3};
19325 static constexpr char const * const name{"first_source_sequence_number"};
19326 static constexpr char const * const typestr{"unsigned int"};
19327 static constexpr bool traverse{false};
19328 static constexpr auto mbr_ptr{&SgIncludeFile::p_first_source_sequence_number};
19329 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19330 using bind = Desc<SgIncludeFile, unsigned int SgIncludeFile::*, &SgIncludeFile::p_first_source_sequence_number>;
19331};
19332template <> struct describe_field_t<SgIncludeFile,unsigned int,&SgIncludeFile::p_last_source_sequence_number> {
19333 using parent = SgIncludeFile;
19334 using field_type = unsigned int;
19335 static constexpr size_t position{4};
19336 static constexpr char const * const name{"last_source_sequence_number"};
19337 static constexpr char const * const typestr{"unsigned int"};
19338 static constexpr bool traverse{false};
19339 static constexpr auto mbr_ptr{&SgIncludeFile::p_last_source_sequence_number};
19340 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19341 using bind = Desc<SgIncludeFile, unsigned int SgIncludeFile::*, &SgIncludeFile::p_last_source_sequence_number>;
19342};
19343template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isIncludedMoreThanOnce> {
19344 using parent = SgIncludeFile;
19345 using field_type = bool;
19346 static constexpr size_t position{5};
19347 static constexpr char const * const name{"isIncludedMoreThanOnce"};
19348 static constexpr char const * const typestr{"bool"};
19349 static constexpr bool traverse{false};
19350 static constexpr auto mbr_ptr{&SgIncludeFile::p_isIncludedMoreThanOnce};
19351 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19352 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_isIncludedMoreThanOnce>;
19353};
19354template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isPrimaryUse> {
19355 using parent = SgIncludeFile;
19356 using field_type = bool;
19357 static constexpr size_t position{6};
19358 static constexpr char const * const name{"isPrimaryUse"};
19359 static constexpr char const * const typestr{"bool"};
19360 static constexpr bool traverse{false};
19361 static constexpr auto mbr_ptr{&SgIncludeFile::p_isPrimaryUse};
19362 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19363 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_isPrimaryUse>;
19364};
19365template <> struct describe_field_t<SgIncludeFile,std::string,&SgIncludeFile::p_file_hash> {
19366 using parent = SgIncludeFile;
19367 using field_type = std::string;
19368 static constexpr size_t position{7};
19369 static constexpr char const * const name{"file_hash"};
19370 static constexpr char const * const typestr{"std::string"};
19371 static constexpr bool traverse{false};
19372 static constexpr auto mbr_ptr{&SgIncludeFile::p_file_hash};
19373 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19374 using bind = Desc<SgIncludeFile, std::string SgIncludeFile::*, &SgIncludeFile::p_file_hash>;
19375};
19376template <> struct describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_name_used_in_include_directive> {
19377 using parent = SgIncludeFile;
19378 using field_type = SgName;
19379 static constexpr size_t position{8};
19380 static constexpr char const * const name{"name_used_in_include_directive"};
19381 static constexpr char const * const typestr{"SgName"};
19382 static constexpr bool traverse{false};
19383 static constexpr auto mbr_ptr{&SgIncludeFile::p_name_used_in_include_directive};
19384 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19385 using bind = Desc<SgIncludeFile, SgName SgIncludeFile::*, &SgIncludeFile::p_name_used_in_include_directive>;
19386};
19387template <> struct describe_field_t<SgIncludeFile,SgSourceFile*,&SgIncludeFile::p_source_file_of_translation_unit> {
19388 using parent = SgIncludeFile;
19389 using field_type = SgSourceFile*;
19390 static constexpr size_t position{9};
19391 static constexpr char const * const name{"source_file_of_translation_unit"};
19392 static constexpr char const * const typestr{"SgSourceFile*"};
19393 static constexpr bool traverse{false};
19394 static constexpr auto mbr_ptr{&SgIncludeFile::p_source_file_of_translation_unit};
19395 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19396 using bind = Desc<SgIncludeFile, SgSourceFile* SgIncludeFile::*, &SgIncludeFile::p_source_file_of_translation_unit>;
19397};
19398template <> struct describe_field_t<SgIncludeFile,SgSourceFile*,&SgIncludeFile::p_including_source_file> {
19399 using parent = SgIncludeFile;
19400 using field_type = SgSourceFile*;
19401 static constexpr size_t position{10};
19402 static constexpr char const * const name{"including_source_file"};
19403 static constexpr char const * const typestr{"SgSourceFile*"};
19404 static constexpr bool traverse{false};
19405 static constexpr auto mbr_ptr{&SgIncludeFile::p_including_source_file};
19406 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19407 using bind = Desc<SgIncludeFile, SgSourceFile* SgIncludeFile::*, &SgIncludeFile::p_including_source_file>;
19408};
19409template <> struct describe_field_t<SgIncludeFile,SgIncludeFile*,&SgIncludeFile::p_parent_include_file> {
19410 using parent = SgIncludeFile;
19411 using field_type = SgIncludeFile*;
19412 static constexpr size_t position{11};
19413 static constexpr char const * const name{"parent_include_file"};
19414 static constexpr char const * const typestr{"SgIncludeFile*"};
19415 static constexpr bool traverse{false};
19416 static constexpr auto mbr_ptr{&SgIncludeFile::p_parent_include_file};
19417 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19418 using bind = Desc<SgIncludeFile, SgIncludeFile* SgIncludeFile::*, &SgIncludeFile::p_parent_include_file>;
19419};
19420template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isSystemInclude> {
19421 using parent = SgIncludeFile;
19422 using field_type = bool;
19423 static constexpr size_t position{12};
19424 static constexpr char const * const name{"isSystemInclude"};
19425 static constexpr char const * const typestr{"bool"};
19426 static constexpr bool traverse{false};
19427 static constexpr auto mbr_ptr{&SgIncludeFile::p_isSystemInclude};
19428 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19429 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_isSystemInclude>;
19430};
19431template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isPreinclude> {
19432 using parent = SgIncludeFile;
19433 using field_type = bool;
19434 static constexpr size_t position{13};
19435 static constexpr char const * const name{"isPreinclude"};
19436 static constexpr char const * const typestr{"bool"};
19437 static constexpr bool traverse{false};
19438 static constexpr auto mbr_ptr{&SgIncludeFile::p_isPreinclude};
19439 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19440 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_isPreinclude>;
19441};
19442template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_requires_explict_path_for_unparsed_headers> {
19443 using parent = SgIncludeFile;
19444 using field_type = bool;
19445 static constexpr size_t position{14};
19446 static constexpr char const * const name{"requires_explict_path_for_unparsed_headers"};
19447 static constexpr char const * const typestr{"bool"};
19448 static constexpr bool traverse{false};
19449 static constexpr auto mbr_ptr{&SgIncludeFile::p_requires_explict_path_for_unparsed_headers};
19450 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19451 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_requires_explict_path_for_unparsed_headers>;
19452};
19453template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_can_be_supported_using_token_based_unparsing> {
19454 using parent = SgIncludeFile;
19455 using field_type = bool;
19456 static constexpr size_t position{15};
19457 static constexpr char const * const name{"can_be_supported_using_token_based_unparsing"};
19458 static constexpr char const * const typestr{"bool"};
19459 static constexpr bool traverse{false};
19460 static constexpr auto mbr_ptr{&SgIncludeFile::p_can_be_supported_using_token_based_unparsing};
19461 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19462 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_can_be_supported_using_token_based_unparsing>;
19463};
19464template <> struct describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_directory_prefix> {
19465 using parent = SgIncludeFile;
19466 using field_type = SgName;
19467 static constexpr size_t position{16};
19468 static constexpr char const * const name{"directory_prefix"};
19469 static constexpr char const * const typestr{"SgName"};
19470 static constexpr bool traverse{false};
19471 static constexpr auto mbr_ptr{&SgIncludeFile::p_directory_prefix};
19472 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19473 using bind = Desc<SgIncludeFile, SgName SgIncludeFile::*, &SgIncludeFile::p_directory_prefix>;
19474};
19475template <> struct describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_name_without_path> {
19476 using parent = SgIncludeFile;
19477 using field_type = SgName;
19478 static constexpr size_t position{17};
19479 static constexpr char const * const name{"name_without_path"};
19480 static constexpr char const * const typestr{"SgName"};
19481 static constexpr bool traverse{false};
19482 static constexpr auto mbr_ptr{&SgIncludeFile::p_name_without_path};
19483 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19484 using bind = Desc<SgIncludeFile, SgName SgIncludeFile::*, &SgIncludeFile::p_name_without_path>;
19485};
19486template <> struct describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_applicationRootDirectory> {
19487 using parent = SgIncludeFile;
19488 using field_type = SgName;
19489 static constexpr size_t position{18};
19490 static constexpr char const * const name{"applicationRootDirectory"};
19491 static constexpr char const * const typestr{"SgName"};
19492 static constexpr bool traverse{false};
19493 static constexpr auto mbr_ptr{&SgIncludeFile::p_applicationRootDirectory};
19494 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19495 using bind = Desc<SgIncludeFile, SgName SgIncludeFile::*, &SgIncludeFile::p_applicationRootDirectory>;
19496};
19497template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_will_be_unparsed> {
19498 using parent = SgIncludeFile;
19499 using field_type = bool;
19500 static constexpr size_t position{19};
19501 static constexpr char const * const name{"will_be_unparsed"};
19502 static constexpr char const * const typestr{"bool"};
19503 static constexpr bool traverse{false};
19504 static constexpr auto mbr_ptr{&SgIncludeFile::p_will_be_unparsed};
19505 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19506 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_will_be_unparsed>;
19507};
19508template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isRoseSystemInclude> {
19509 using parent = SgIncludeFile;
19510 using field_type = bool;
19511 static constexpr size_t position{20};
19512 static constexpr char const * const name{"isRoseSystemInclude"};
19513 static constexpr char const * const typestr{"bool"};
19514 static constexpr bool traverse{false};
19515 static constexpr auto mbr_ptr{&SgIncludeFile::p_isRoseSystemInclude};
19516 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19517 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_isRoseSystemInclude>;
19518};
19519template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_from_system_include_dir> {
19520 using parent = SgIncludeFile;
19521 using field_type = bool;
19522 static constexpr size_t position{21};
19523 static constexpr char const * const name{"from_system_include_dir"};
19524 static constexpr char const * const typestr{"bool"};
19525 static constexpr bool traverse{false};
19526 static constexpr auto mbr_ptr{&SgIncludeFile::p_from_system_include_dir};
19527 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19528 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_from_system_include_dir>;
19529};
19530template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_preinclude_macros_only> {
19531 using parent = SgIncludeFile;
19532 using field_type = bool;
19533 static constexpr size_t position{22};
19534 static constexpr char const * const name{"preinclude_macros_only"};
19535 static constexpr char const * const typestr{"bool"};
19536 static constexpr bool traverse{false};
19537 static constexpr auto mbr_ptr{&SgIncludeFile::p_preinclude_macros_only};
19538 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19539 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_preinclude_macros_only>;
19540};
19541template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isApplicationFile> {
19542 using parent = SgIncludeFile;
19543 using field_type = bool;
19544 static constexpr size_t position{23};
19545 static constexpr char const * const name{"isApplicationFile"};
19546 static constexpr char const * const typestr{"bool"};
19547 static constexpr bool traverse{false};
19548 static constexpr auto mbr_ptr{&SgIncludeFile::p_isApplicationFile};
19549 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19550 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_isApplicationFile>;
19551};
19552template <> struct describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isRootSourceFile> {
19553 using parent = SgIncludeFile;
19554 using field_type = bool;
19555 static constexpr size_t position{24};
19556 static constexpr char const * const name{"isRootSourceFile"};
19557 static constexpr char const * const typestr{"bool"};
19558 static constexpr bool traverse{false};
19559 static constexpr auto mbr_ptr{&SgIncludeFile::p_isRootSourceFile};
19560 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19561 using bind = Desc<SgIncludeFile, bool SgIncludeFile::*, &SgIncludeFile::p_isRootSourceFile>;
19562};
19563template <> struct describe_field_t<SgIncludeFile,SgStatement*,&SgIncludeFile::p_firstStatement> {
19564 using parent = SgIncludeFile;
19565 using field_type = SgStatement*;
19566 static constexpr size_t position{25};
19567 static constexpr char const * const name{"firstStatement"};
19568 static constexpr char const * const typestr{"SgStatement*"};
19569 static constexpr bool traverse{false};
19570 static constexpr auto mbr_ptr{&SgIncludeFile::p_firstStatement};
19571 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19572 using bind = Desc<SgIncludeFile, SgStatement* SgIncludeFile::*, &SgIncludeFile::p_firstStatement>;
19573};
19574template <> struct describe_field_t<SgIncludeFile,SgStatement*,&SgIncludeFile::p_lastStatement> {
19575 using parent = SgIncludeFile;
19576 using field_type = SgStatement*;
19577 static constexpr size_t position{26};
19578 static constexpr char const * const name{"lastStatement"};
19579 static constexpr char const * const typestr{"SgStatement*"};
19580 static constexpr bool traverse{false};
19581 static constexpr auto mbr_ptr{&SgIncludeFile::p_lastStatement};
19582 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19583 using bind = Desc<SgIncludeFile, SgStatement* SgIncludeFile::*, &SgIncludeFile::p_lastStatement>;
19584};
19585template <> struct describe_node_t<SgIncludeFile> {
19586 using node = SgIncludeFile;
19587 using base = SgSupport;
19588 static constexpr char const * const name{"IncludeFile"};
19589 static constexpr unsigned long variant{474};
19590 static constexpr bool concrete{true};
19591 using subclasses_t = mp::List<>;
19592 using fields_t = mp::List<describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_filename>, describe_field_t<SgIncludeFile,SgSourceFile*,&SgIncludeFile::p_source_file>, describe_field_t<SgIncludeFile,SgIncludeFilePtrList,&SgIncludeFile::p_include_file_list>, describe_field_t<SgIncludeFile,unsigned int,&SgIncludeFile::p_first_source_sequence_number>, describe_field_t<SgIncludeFile,unsigned int,&SgIncludeFile::p_last_source_sequence_number>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isIncludedMoreThanOnce>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isPrimaryUse>, describe_field_t<SgIncludeFile,std::string,&SgIncludeFile::p_file_hash>, describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_name_used_in_include_directive>, describe_field_t<SgIncludeFile,SgSourceFile*,&SgIncludeFile::p_source_file_of_translation_unit>, describe_field_t<SgIncludeFile,SgSourceFile*,&SgIncludeFile::p_including_source_file>, describe_field_t<SgIncludeFile,SgIncludeFile*,&SgIncludeFile::p_parent_include_file>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isSystemInclude>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isPreinclude>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_requires_explict_path_for_unparsed_headers>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_can_be_supported_using_token_based_unparsing>, describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_directory_prefix>, describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_name_without_path>, describe_field_t<SgIncludeFile,SgName,&SgIncludeFile::p_applicationRootDirectory>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_will_be_unparsed>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isRoseSystemInclude>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_from_system_include_dir>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_preinclude_macros_only>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isApplicationFile>, describe_field_t<SgIncludeFile,bool,&SgIncludeFile::p_isRootSourceFile>, describe_field_t<SgIncludeFile,SgStatement*,&SgIncludeFile::p_firstStatement>, describe_field_t<SgIncludeFile,SgStatement*,&SgIncludeFile::p_lastStatement>>;
19593};
19594template <> struct node_from_variant_t<474> { using type = SgIncludeFile; };
19595
19596// Class: IncludeNextDirectiveStatement
19600 static constexpr char const * const name{"IncludeNextDirectiveStatement"};
19601 static constexpr unsigned long variant{475};
19602 static constexpr bool concrete{true};
19603 using subclasses_t = mp::List<>;
19604 using fields_t = mp::List<>;
19605};
19606template <> struct node_from_variant_t<475> { using type = SgIncludeNextDirectiveStatement; };
19607
19608// Class: InitializedName
19610 using parent = SgInitializedName;
19611 using field_type = SgName;
19612 static constexpr size_t position{0};
19613 static constexpr char const * const name{"name"};
19614 static constexpr char const * const typestr{"SgName"};
19615 static constexpr bool traverse{false};
19616 static constexpr auto mbr_ptr{&SgInitializedName::p_name};
19617 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19618 using bind = Desc<SgInitializedName, SgName SgInitializedName::*, &SgInitializedName::p_name>;
19619};
19620template <> struct describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_microsoft_uuid_string> {
19621 using parent = SgInitializedName;
19622 using field_type = std::string;
19623 static constexpr size_t position{1};
19624 static constexpr char const * const name{"microsoft_uuid_string"};
19625 static constexpr char const * const typestr{"std::string"};
19626 static constexpr bool traverse{false};
19627 static constexpr auto mbr_ptr{&SgInitializedName::p_microsoft_uuid_string};
19628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19629 using bind = Desc<SgInitializedName, std::string SgInitializedName::*, &SgInitializedName::p_microsoft_uuid_string>;
19630};
19632 using parent = SgInitializedName;
19633 using field_type = SgType*;
19634 static constexpr size_t position{2};
19635 static constexpr char const * const name{"typeptr"};
19636 static constexpr char const * const typestr{"SgType*"};
19637 static constexpr bool traverse{false};
19638 static constexpr auto mbr_ptr{&SgInitializedName::p_typeptr};
19639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19640 using bind = Desc<SgInitializedName, SgType* SgInitializedName::*, &SgInitializedName::p_typeptr>;
19641};
19643 using parent = SgInitializedName;
19644 using field_type = SgInitializer*;
19645 static constexpr size_t position{3};
19646 static constexpr char const * const name{"initptr"};
19647 static constexpr char const * const typestr{"SgInitializer*"};
19648 static constexpr bool traverse{true};
19649 static constexpr auto mbr_ptr{&SgInitializedName::p_initptr};
19650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19651 using bind = Desc<SgInitializedName, SgInitializer* SgInitializedName::*, &SgInitializedName::p_initptr>;
19652};
19654 using parent = SgInitializedName;
19656 static constexpr size_t position{4};
19657 static constexpr char const * const name{"prev_decl_item"};
19658 static constexpr char const * const typestr{"SgInitializedName*"};
19659 static constexpr bool traverse{false};
19660 static constexpr auto mbr_ptr{&SgInitializedName::p_prev_decl_item};
19661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19662 using bind = Desc<SgInitializedName, SgInitializedName* SgInitializedName::*, &SgInitializedName::p_prev_decl_item>;
19663};
19665 using parent = SgInitializedName;
19666 using field_type = bool;
19667 static constexpr size_t position{5};
19668 static constexpr char const * const name{"is_initializer"};
19669 static constexpr char const * const typestr{"bool"};
19670 static constexpr bool traverse{false};
19671 static constexpr auto mbr_ptr{&SgInitializedName::p_is_initializer};
19672 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19673 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_is_initializer>;
19674};
19676 using parent = SgInitializedName;
19678 static constexpr size_t position{6};
19679 static constexpr char const * const name{"declptr"};
19680 static constexpr char const * const typestr{"SgDeclarationStatement*"};
19681 static constexpr bool traverse{false};
19682 static constexpr auto mbr_ptr{&SgInitializedName::p_declptr};
19683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19684 using bind = Desc<SgInitializedName, SgDeclarationStatement* SgInitializedName::*, &SgInitializedName::p_declptr>;
19685};
19687 using parent = SgInitializedName;
19689 static constexpr size_t position{7};
19690 static constexpr char const * const name{"storageModifier"};
19691 static constexpr char const * const typestr{"SgStorageModifier*"};
19692 static constexpr bool traverse{false};
19693 static constexpr auto mbr_ptr{&SgInitializedName::p_storageModifier};
19694 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19695 using bind = Desc<SgInitializedName, SgStorageModifier* SgInitializedName::*, &SgInitializedName::p_storageModifier>;
19696};
19698 using parent = SgInitializedName;
19700 static constexpr size_t position{8};
19701 static constexpr char const * const name{"scope"};
19702 static constexpr char const * const typestr{"SgScopeStatement*"};
19703 static constexpr bool traverse{false};
19704 static constexpr auto mbr_ptr{&SgInitializedName::p_scope};
19705 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19706 using bind = Desc<SgInitializedName, SgScopeStatement* SgInitializedName::*, &SgInitializedName::p_scope>;
19707};
19709 using parent = SgInitializedName;
19711 static constexpr size_t position{9};
19712 static constexpr char const * const name{"preinitialization"};
19713 static constexpr char const * const typestr{"SgInitializedName::preinitialization_enum"};
19714 static constexpr bool traverse{false};
19715 static constexpr auto mbr_ptr{&SgInitializedName::p_preinitialization};
19716 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19717 using bind = Desc<SgInitializedName, SgInitializedName::preinitialization_enum SgInitializedName::*, &SgInitializedName::p_preinitialization>;
19718};
19719template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_isCoArray> {
19720 using parent = SgInitializedName;
19721 using field_type = bool;
19722 static constexpr size_t position{10};
19723 static constexpr char const * const name{"isCoArray"};
19724 static constexpr char const * const typestr{"bool"};
19725 static constexpr bool traverse{false};
19726 static constexpr auto mbr_ptr{&SgInitializedName::p_isCoArray};
19727 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19728 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_isCoArray>;
19729};
19731 using parent = SgInitializedName;
19733 static constexpr size_t position{11};
19734 static constexpr char const * const name{"register_name_code"};
19735 static constexpr char const * const typestr{"SgInitializedName::asm_register_name_enum"};
19736 static constexpr bool traverse{false};
19737 static constexpr auto mbr_ptr{&SgInitializedName::p_register_name_code};
19738 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19739 using bind = Desc<SgInitializedName, SgInitializedName::asm_register_name_enum SgInitializedName::*, &SgInitializedName::p_register_name_code>;
19740};
19741template <> struct describe_field_t<SgInitializedName,SgInitializedName::excess_specifier_enum,&SgInitializedName::p_excess_specifier> {
19742 using parent = SgInitializedName;
19743 using field_type = SgInitializedName::excess_specifier_enum;
19744 static constexpr size_t position{12};
19745 static constexpr char const * const name{"excess_specifier"};
19746 static constexpr char const * const typestr{"SgInitializedName::excess_specifier_enum"};
19747 static constexpr bool traverse{false};
19748 static constexpr auto mbr_ptr{&SgInitializedName::p_excess_specifier};
19749 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19750 using bind = Desc<SgInitializedName, SgInitializedName::excess_specifier_enum SgInitializedName::*, &SgInitializedName::p_excess_specifier>;
19751};
19752template <> struct describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_register_name_string> {
19753 using parent = SgInitializedName;
19754 using field_type = std::string;
19755 static constexpr size_t position{13};
19756 static constexpr char const * const name{"register_name_string"};
19757 static constexpr char const * const typestr{"std::string"};
19758 static constexpr bool traverse{false};
19759 static constexpr auto mbr_ptr{&SgInitializedName::p_register_name_string};
19760 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19761 using bind = Desc<SgInitializedName, std::string SgInitializedName::*, &SgInitializedName::p_register_name_string>;
19762};
19763template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_requiresGlobalNameQualificationOnType> {
19764 using parent = SgInitializedName;
19765 using field_type = bool;
19766 static constexpr size_t position{14};
19767 static constexpr char const * const name{"requiresGlobalNameQualificationOnType"};
19768 static constexpr char const * const typestr{"bool"};
19769 static constexpr bool traverse{false};
19770 static constexpr auto mbr_ptr{&SgInitializedName::p_requiresGlobalNameQualificationOnType};
19771 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19772 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_requiresGlobalNameQualificationOnType>;
19773};
19774template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_shapeDeferred> {
19775 using parent = SgInitializedName;
19776 using field_type = bool;
19777 static constexpr size_t position{15};
19778 static constexpr char const * const name{"shapeDeferred"};
19779 static constexpr char const * const typestr{"bool"};
19780 static constexpr bool traverse{false};
19781 static constexpr auto mbr_ptr{&SgInitializedName::p_shapeDeferred};
19782 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19783 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_shapeDeferred>;
19784};
19785template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_initializationDeferred> {
19786 using parent = SgInitializedName;
19787 using field_type = bool;
19788 static constexpr size_t position{16};
19789 static constexpr char const * const name{"initializationDeferred"};
19790 static constexpr char const * const typestr{"bool"};
19791 static constexpr bool traverse{false};
19792 static constexpr auto mbr_ptr{&SgInitializedName::p_initializationDeferred};
19793 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19794 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_initializationDeferred>;
19795};
19796template <> struct describe_field_t<SgInitializedName,SgBitVector,&SgInitializedName::p_gnu_attribute_modifierVector> {
19797 using parent = SgInitializedName;
19798 using field_type = SgBitVector;
19799 static constexpr size_t position{17};
19800 static constexpr char const * const name{"gnu_attribute_modifierVector"};
19801 static constexpr char const * const typestr{"SgBitVector"};
19802 static constexpr bool traverse{false};
19803 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_modifierVector};
19804 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19805 using bind = Desc<SgInitializedName, SgBitVector SgInitializedName::*, &SgInitializedName::p_gnu_attribute_modifierVector>;
19806};
19807template <> struct describe_field_t<SgInitializedName,unsigned long int,&SgInitializedName::p_gnu_attribute_initialization_priority> {
19808 using parent = SgInitializedName;
19809 using field_type = unsigned long int;
19810 static constexpr size_t position{18};
19811 static constexpr char const * const name{"gnu_attribute_initialization_priority"};
19812 static constexpr char const * const typestr{"unsigned long int"};
19813 static constexpr bool traverse{false};
19814 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_initialization_priority};
19815 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19816 using bind = Desc<SgInitializedName, unsigned long int SgInitializedName::*, &SgInitializedName::p_gnu_attribute_initialization_priority>;
19817};
19818template <> struct describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_named_weak_reference> {
19819 using parent = SgInitializedName;
19820 using field_type = std::string;
19821 static constexpr size_t position{19};
19822 static constexpr char const * const name{"gnu_attribute_named_weak_reference"};
19823 static constexpr char const * const typestr{"std::string"};
19824 static constexpr bool traverse{false};
19825 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_named_weak_reference};
19826 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19827 using bind = Desc<SgInitializedName, std::string SgInitializedName::*, &SgInitializedName::p_gnu_attribute_named_weak_reference>;
19828};
19829template <> struct describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_named_alias> {
19830 using parent = SgInitializedName;
19831 using field_type = std::string;
19832 static constexpr size_t position{20};
19833 static constexpr char const * const name{"gnu_attribute_named_alias"};
19834 static constexpr char const * const typestr{"std::string"};
19835 static constexpr bool traverse{false};
19836 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_named_alias};
19837 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19838 using bind = Desc<SgInitializedName, std::string SgInitializedName::*, &SgInitializedName::p_gnu_attribute_named_alias>;
19839};
19840template <> struct describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_cleanup_function> {
19841 using parent = SgInitializedName;
19842 using field_type = std::string;
19843 static constexpr size_t position{21};
19844 static constexpr char const * const name{"gnu_attribute_cleanup_function"};
19845 static constexpr char const * const typestr{"std::string"};
19846 static constexpr bool traverse{false};
19847 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_cleanup_function};
19848 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19849 using bind = Desc<SgInitializedName, std::string SgInitializedName::*, &SgInitializedName::p_gnu_attribute_cleanup_function>;
19850};
19851template <> struct describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_section_name> {
19852 using parent = SgInitializedName;
19853 using field_type = std::string;
19854 static constexpr size_t position{22};
19855 static constexpr char const * const name{"gnu_attribute_section_name"};
19856 static constexpr char const * const typestr{"std::string"};
19857 static constexpr bool traverse{false};
19858 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_section_name};
19859 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19860 using bind = Desc<SgInitializedName, std::string SgInitializedName::*, &SgInitializedName::p_gnu_attribute_section_name>;
19861};
19862template <> struct describe_field_t<SgInitializedName,int,&SgInitializedName::p_gnu_attribute_alignment> {
19863 using parent = SgInitializedName;
19864 using field_type = int;
19865 static constexpr size_t position{23};
19866 static constexpr char const * const name{"gnu_attribute_alignment"};
19867 static constexpr char const * const typestr{"int"};
19868 static constexpr bool traverse{false};
19869 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_alignment};
19870 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19871 using bind = Desc<SgInitializedName, int SgInitializedName::*, &SgInitializedName::p_gnu_attribute_alignment>;
19872};
19873template <> struct describe_field_t<SgInitializedName,SgDeclarationModifier::gnu_declaration_visability_enum,&SgInitializedName::p_gnu_attribute_visability> {
19874 using parent = SgInitializedName;
19876 static constexpr size_t position{24};
19877 static constexpr char const * const name{"gnu_attribute_visability"};
19878 static constexpr char const * const typestr{"SgDeclarationModifier::gnu_declaration_visability_enum"};
19879 static constexpr bool traverse{false};
19880 static constexpr auto mbr_ptr{&SgInitializedName::p_gnu_attribute_visability};
19881 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19882 using bind = Desc<SgInitializedName, SgDeclarationModifier::gnu_declaration_visability_enum SgInitializedName::*, &SgInitializedName::p_gnu_attribute_visability>;
19883};
19884template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_protected_declaration> {
19885 using parent = SgInitializedName;
19886 using field_type = bool;
19887 static constexpr size_t position{25};
19888 static constexpr char const * const name{"protected_declaration"};
19889 static constexpr char const * const typestr{"bool"};
19890 static constexpr bool traverse{false};
19891 static constexpr auto mbr_ptr{&SgInitializedName::p_protected_declaration};
19892 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19893 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_protected_declaration>;
19894};
19895template <> struct describe_field_t<SgInitializedName,int,&SgInitializedName::p_name_qualification_length> {
19896 using parent = SgInitializedName;
19897 using field_type = int;
19898 static constexpr size_t position{26};
19899 static constexpr char const * const name{"name_qualification_length"};
19900 static constexpr char const * const typestr{"int"};
19901 static constexpr bool traverse{false};
19902 static constexpr auto mbr_ptr{&SgInitializedName::p_name_qualification_length};
19903 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19904 using bind = Desc<SgInitializedName, int SgInitializedName::*, &SgInitializedName::p_name_qualification_length>;
19905};
19906template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_type_elaboration_required> {
19907 using parent = SgInitializedName;
19908 using field_type = bool;
19909 static constexpr size_t position{27};
19910 static constexpr char const * const name{"type_elaboration_required"};
19911 static constexpr char const * const typestr{"bool"};
19912 static constexpr bool traverse{false};
19913 static constexpr auto mbr_ptr{&SgInitializedName::p_type_elaboration_required};
19914 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19915 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_type_elaboration_required>;
19916};
19917template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_global_qualification_required> {
19918 using parent = SgInitializedName;
19919 using field_type = bool;
19920 static constexpr size_t position{28};
19921 static constexpr char const * const name{"global_qualification_required"};
19922 static constexpr char const * const typestr{"bool"};
19923 static constexpr bool traverse{false};
19924 static constexpr auto mbr_ptr{&SgInitializedName::p_global_qualification_required};
19925 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19926 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_global_qualification_required>;
19927};
19928template <> struct describe_field_t<SgInitializedName,int,&SgInitializedName::p_name_qualification_length_for_type> {
19929 using parent = SgInitializedName;
19930 using field_type = int;
19931 static constexpr size_t position{29};
19932 static constexpr char const * const name{"name_qualification_length_for_type"};
19933 static constexpr char const * const typestr{"int"};
19934 static constexpr bool traverse{false};
19935 static constexpr auto mbr_ptr{&SgInitializedName::p_name_qualification_length_for_type};
19936 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19937 using bind = Desc<SgInitializedName, int SgInitializedName::*, &SgInitializedName::p_name_qualification_length_for_type>;
19938};
19939template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_type_elaboration_required_for_type> {
19940 using parent = SgInitializedName;
19941 using field_type = bool;
19942 static constexpr size_t position{30};
19943 static constexpr char const * const name{"type_elaboration_required_for_type"};
19944 static constexpr char const * const typestr{"bool"};
19945 static constexpr bool traverse{false};
19946 static constexpr auto mbr_ptr{&SgInitializedName::p_type_elaboration_required_for_type};
19947 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19948 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_type_elaboration_required_for_type>;
19949};
19950template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_global_qualification_required_for_type> {
19951 using parent = SgInitializedName;
19952 using field_type = bool;
19953 static constexpr size_t position{31};
19954 static constexpr char const * const name{"global_qualification_required_for_type"};
19955 static constexpr char const * const typestr{"bool"};
19956 static constexpr bool traverse{false};
19957 static constexpr auto mbr_ptr{&SgInitializedName::p_global_qualification_required_for_type};
19958 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19959 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_global_qualification_required_for_type>;
19960};
19961template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_hasArrayTypeWithEmptyBracketSyntax> {
19962 using parent = SgInitializedName;
19963 using field_type = bool;
19964 static constexpr size_t position{32};
19965 static constexpr char const * const name{"hasArrayTypeWithEmptyBracketSyntax"};
19966 static constexpr char const * const typestr{"bool"};
19967 static constexpr bool traverse{false};
19968 static constexpr auto mbr_ptr{&SgInitializedName::p_hasArrayTypeWithEmptyBracketSyntax};
19969 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19970 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_hasArrayTypeWithEmptyBracketSyntax>;
19971};
19972template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_C11_Alignas_keyword> {
19973 using parent = SgInitializedName;
19974 using field_type = bool;
19975 static constexpr size_t position{33};
19976 static constexpr char const * const name{"using_C11_Alignas_keyword"};
19977 static constexpr char const * const typestr{"bool"};
19978 static constexpr bool traverse{false};
19979 static constexpr auto mbr_ptr{&SgInitializedName::p_using_C11_Alignas_keyword};
19980 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19981 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_using_C11_Alignas_keyword>;
19982};
19983template <> struct describe_field_t<SgInitializedName,SgNode*,&SgInitializedName::p_constant_or_type_argument_for_Alignas_keyword> {
19984 using parent = SgInitializedName;
19985 using field_type = SgNode*;
19986 static constexpr size_t position{34};
19987 static constexpr char const * const name{"constant_or_type_argument_for_Alignas_keyword"};
19988 static constexpr char const * const typestr{"SgNode*"};
19989 static constexpr bool traverse{false};
19990 static constexpr auto mbr_ptr{&SgInitializedName::p_constant_or_type_argument_for_Alignas_keyword};
19991 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
19992 using bind = Desc<SgInitializedName, SgNode* SgInitializedName::*, &SgInitializedName::p_constant_or_type_argument_for_Alignas_keyword>;
19993};
19994template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_auto_keyword> {
19995 using parent = SgInitializedName;
19996 using field_type = bool;
19997 static constexpr size_t position{35};
19998 static constexpr char const * const name{"using_auto_keyword"};
19999 static constexpr char const * const typestr{"bool"};
20000 static constexpr bool traverse{false};
20001 static constexpr auto mbr_ptr{&SgInitializedName::p_using_auto_keyword};
20002 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20003 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_using_auto_keyword>;
20004};
20005template <> struct describe_field_t<SgInitializedName,SgType *,&SgInitializedName::p_auto_decltype> {
20006 using parent = SgInitializedName;
20007 using field_type = SgType *;
20008 static constexpr size_t position{36};
20009 static constexpr char const * const name{"auto_decltype"};
20010 static constexpr char const * const typestr{"SgType *"};
20011 static constexpr bool traverse{false};
20012 static constexpr auto mbr_ptr{&SgInitializedName::p_auto_decltype};
20013 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20014 using bind = Desc<SgInitializedName, SgType * SgInitializedName::*, &SgInitializedName::p_auto_decltype>;
20015};
20016template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_device_keyword> {
20017 using parent = SgInitializedName;
20018 using field_type = bool;
20019 static constexpr size_t position{37};
20020 static constexpr char const * const name{"using_device_keyword"};
20021 static constexpr char const * const typestr{"bool"};
20022 static constexpr bool traverse{false};
20023 static constexpr auto mbr_ptr{&SgInitializedName::p_using_device_keyword};
20024 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20025 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_using_device_keyword>;
20026};
20027template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_is_braced_initialized> {
20028 using parent = SgInitializedName;
20029 using field_type = bool;
20030 static constexpr size_t position{38};
20031 static constexpr char const * const name{"is_braced_initialized"};
20032 static constexpr char const * const typestr{"bool"};
20033 static constexpr bool traverse{false};
20034 static constexpr auto mbr_ptr{&SgInitializedName::p_is_braced_initialized};
20035 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20036 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_is_braced_initialized>;
20037};
20038template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_assignment_copy_constructor_syntax> {
20039 using parent = SgInitializedName;
20040 using field_type = bool;
20041 static constexpr size_t position{39};
20042 static constexpr char const * const name{"using_assignment_copy_constructor_syntax"};
20043 static constexpr char const * const typestr{"bool"};
20044 static constexpr bool traverse{false};
20045 static constexpr auto mbr_ptr{&SgInitializedName::p_using_assignment_copy_constructor_syntax};
20046 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20047 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_using_assignment_copy_constructor_syntax>;
20048};
20049template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_needs_definitions> {
20050 using parent = SgInitializedName;
20051 using field_type = bool;
20052 static constexpr size_t position{40};
20053 static constexpr char const * const name{"needs_definitions"};
20054 static constexpr char const * const typestr{"bool"};
20055 static constexpr bool traverse{false};
20056 static constexpr auto mbr_ptr{&SgInitializedName::p_needs_definitions};
20057 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20058 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_needs_definitions>;
20059};
20060template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_is_parameter_pack> {
20061 using parent = SgInitializedName;
20062 using field_type = bool;
20063 static constexpr size_t position{41};
20064 static constexpr char const * const name{"is_parameter_pack"};
20065 static constexpr char const * const typestr{"bool"};
20066 static constexpr bool traverse{false};
20067 static constexpr auto mbr_ptr{&SgInitializedName::p_is_parameter_pack};
20068 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20069 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_is_parameter_pack>;
20070};
20071template <> struct describe_field_t<SgInitializedName,bool,&SgInitializedName::p_is_pack_element> {
20072 using parent = SgInitializedName;
20073 using field_type = bool;
20074 static constexpr size_t position{42};
20075 static constexpr char const * const name{"is_pack_element"};
20076 static constexpr char const * const typestr{"bool"};
20077 static constexpr bool traverse{false};
20078 static constexpr auto mbr_ptr{&SgInitializedName::p_is_pack_element};
20079 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20080 using bind = Desc<SgInitializedName, bool SgInitializedName::*, &SgInitializedName::p_is_pack_element>;
20081};
20083 using node = SgInitializedName;
20084 using base = SgLocatedNodeSupport;
20085 static constexpr char const * const name{"InitializedName"};
20086 static constexpr unsigned long variant{476};
20087 static constexpr bool concrete{true};
20088 using subclasses_t = mp::List<>;
20089 using fields_t = mp::List<describe_field_t<SgInitializedName,SgName,&SgInitializedName::p_name>, describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_microsoft_uuid_string>, describe_field_t<SgInitializedName,SgType*,&SgInitializedName::p_typeptr>, describe_field_t<SgInitializedName,SgInitializer*,&SgInitializedName::p_initptr>, describe_field_t<SgInitializedName,SgInitializedName*,&SgInitializedName::p_prev_decl_item>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_is_initializer>, describe_field_t<SgInitializedName,SgDeclarationStatement*,&SgInitializedName::p_declptr>, describe_field_t<SgInitializedName,SgStorageModifier*,&SgInitializedName::p_storageModifier>, describe_field_t<SgInitializedName,SgScopeStatement*,&SgInitializedName::p_scope>, describe_field_t<SgInitializedName,SgInitializedName::preinitialization_enum,&SgInitializedName::p_preinitialization>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_isCoArray>, describe_field_t<SgInitializedName,SgInitializedName::asm_register_name_enum,&SgInitializedName::p_register_name_code>, describe_field_t<SgInitializedName,SgInitializedName::excess_specifier_enum,&SgInitializedName::p_excess_specifier>, describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_register_name_string>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_requiresGlobalNameQualificationOnType>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_shapeDeferred>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_initializationDeferred>, describe_field_t<SgInitializedName,SgBitVector,&SgInitializedName::p_gnu_attribute_modifierVector>, describe_field_t<SgInitializedName,unsigned long int,&SgInitializedName::p_gnu_attribute_initialization_priority>, describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_named_weak_reference>, describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_named_alias>, describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_cleanup_function>, describe_field_t<SgInitializedName,std::string,&SgInitializedName::p_gnu_attribute_section_name>, describe_field_t<SgInitializedName,int,&SgInitializedName::p_gnu_attribute_alignment>, describe_field_t<SgInitializedName,SgDeclarationModifier::gnu_declaration_visability_enum,&SgInitializedName::p_gnu_attribute_visability>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_protected_declaration>, describe_field_t<SgInitializedName,int,&SgInitializedName::p_name_qualification_length>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_type_elaboration_required>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_global_qualification_required>, describe_field_t<SgInitializedName,int,&SgInitializedName::p_name_qualification_length_for_type>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_type_elaboration_required_for_type>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_global_qualification_required_for_type>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_hasArrayTypeWithEmptyBracketSyntax>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_C11_Alignas_keyword>, describe_field_t<SgInitializedName,SgNode*,&SgInitializedName::p_constant_or_type_argument_for_Alignas_keyword>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_auto_keyword>, describe_field_t<SgInitializedName,SgType *,&SgInitializedName::p_auto_decltype>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_device_keyword>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_is_braced_initialized>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_using_assignment_copy_constructor_syntax>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_needs_definitions>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_is_parameter_pack>, describe_field_t<SgInitializedName,bool,&SgInitializedName::p_is_pack_element>>;
20090};
20091template <> struct node_from_variant_t<476> { using type = SgInitializedName; };
20092
20093// Class: Initializer
20095 using parent = SgInitializer;
20096 using field_type = bool;
20097 static constexpr size_t position{0};
20098 static constexpr char const * const name{"is_explicit_cast"};
20099 static constexpr char const * const typestr{"bool"};
20100 static constexpr bool traverse{false};
20101 static constexpr auto mbr_ptr{&SgInitializer::p_is_explicit_cast};
20102 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20103 using bind = Desc<SgInitializer, bool SgInitializer::*, &SgInitializer::p_is_explicit_cast>;
20104};
20105template <> struct describe_field_t<SgInitializer,bool,&SgInitializer::p_is_braced_initialized> {
20106 using parent = SgInitializer;
20107 using field_type = bool;
20108 static constexpr size_t position{1};
20109 static constexpr char const * const name{"is_braced_initialized"};
20110 static constexpr char const * const typestr{"bool"};
20111 static constexpr bool traverse{false};
20112 static constexpr auto mbr_ptr{&SgInitializer::p_is_braced_initialized};
20113 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20114 using bind = Desc<SgInitializer, bool SgInitializer::*, &SgInitializer::p_is_braced_initialized>;
20115};
20125template <> struct node_from_variant_t<477> { using type = SgInitializer; };
20126
20127// Class: InquireStatement
20128template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_file> {
20129 using parent = SgInquireStatement;
20130 using field_type = SgExpression*;
20131 static constexpr size_t position{0};
20132 static constexpr char const * const name{"file"};
20133 static constexpr char const * const typestr{"SgExpression*"};
20134 static constexpr bool traverse{false};
20135 static constexpr auto mbr_ptr{&SgInquireStatement::p_file};
20136 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20137 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_file>;
20138};
20139template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_access> {
20140 using parent = SgInquireStatement;
20141 using field_type = SgExpression*;
20142 static constexpr size_t position{1};
20143 static constexpr char const * const name{"access"};
20144 static constexpr char const * const typestr{"SgExpression*"};
20145 static constexpr bool traverse{false};
20146 static constexpr auto mbr_ptr{&SgInquireStatement::p_access};
20147 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20148 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_access>;
20149};
20150template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_form> {
20151 using parent = SgInquireStatement;
20152 using field_type = SgExpression*;
20153 static constexpr size_t position{2};
20154 static constexpr char const * const name{"form"};
20155 static constexpr char const * const typestr{"SgExpression*"};
20156 static constexpr bool traverse{false};
20157 static constexpr auto mbr_ptr{&SgInquireStatement::p_form};
20158 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20159 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_form>;
20160};
20161template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_recl> {
20162 using parent = SgInquireStatement;
20163 using field_type = SgExpression*;
20164 static constexpr size_t position{3};
20165 static constexpr char const * const name{"recl"};
20166 static constexpr char const * const typestr{"SgExpression*"};
20167 static constexpr bool traverse{false};
20168 static constexpr auto mbr_ptr{&SgInquireStatement::p_recl};
20169 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20170 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_recl>;
20171};
20172template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_blank> {
20173 using parent = SgInquireStatement;
20174 using field_type = SgExpression*;
20175 static constexpr size_t position{4};
20176 static constexpr char const * const name{"blank"};
20177 static constexpr char const * const typestr{"SgExpression*"};
20178 static constexpr bool traverse{false};
20179 static constexpr auto mbr_ptr{&SgInquireStatement::p_blank};
20180 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20181 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_blank>;
20182};
20183template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_exist> {
20184 using parent = SgInquireStatement;
20185 using field_type = SgExpression*;
20186 static constexpr size_t position{5};
20187 static constexpr char const * const name{"exist"};
20188 static constexpr char const * const typestr{"SgExpression*"};
20189 static constexpr bool traverse{false};
20190 static constexpr auto mbr_ptr{&SgInquireStatement::p_exist};
20191 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20192 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_exist>;
20193};
20194template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_opened> {
20195 using parent = SgInquireStatement;
20196 using field_type = SgExpression*;
20197 static constexpr size_t position{6};
20198 static constexpr char const * const name{"opened"};
20199 static constexpr char const * const typestr{"SgExpression*"};
20200 static constexpr bool traverse{false};
20201 static constexpr auto mbr_ptr{&SgInquireStatement::p_opened};
20202 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20203 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_opened>;
20204};
20205template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_number> {
20206 using parent = SgInquireStatement;
20207 using field_type = SgExpression*;
20208 static constexpr size_t position{7};
20209 static constexpr char const * const name{"number"};
20210 static constexpr char const * const typestr{"SgExpression*"};
20211 static constexpr bool traverse{false};
20212 static constexpr auto mbr_ptr{&SgInquireStatement::p_number};
20213 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20214 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_number>;
20215};
20216template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_named> {
20217 using parent = SgInquireStatement;
20218 using field_type = SgExpression*;
20219 static constexpr size_t position{8};
20220 static constexpr char const * const name{"named"};
20221 static constexpr char const * const typestr{"SgExpression*"};
20222 static constexpr bool traverse{false};
20223 static constexpr auto mbr_ptr{&SgInquireStatement::p_named};
20224 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20225 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_named>;
20226};
20227template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_name> {
20228 using parent = SgInquireStatement;
20229 using field_type = SgExpression*;
20230 static constexpr size_t position{9};
20231 static constexpr char const * const name{"name"};
20232 static constexpr char const * const typestr{"SgExpression*"};
20233 static constexpr bool traverse{false};
20234 static constexpr auto mbr_ptr{&SgInquireStatement::p_name};
20235 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20236 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_name>;
20237};
20238template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_sequential> {
20239 using parent = SgInquireStatement;
20240 using field_type = SgExpression*;
20241 static constexpr size_t position{10};
20242 static constexpr char const * const name{"sequential"};
20243 static constexpr char const * const typestr{"SgExpression*"};
20244 static constexpr bool traverse{false};
20245 static constexpr auto mbr_ptr{&SgInquireStatement::p_sequential};
20246 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20247 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_sequential>;
20248};
20249template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_direct> {
20250 using parent = SgInquireStatement;
20251 using field_type = SgExpression*;
20252 static constexpr size_t position{11};
20253 static constexpr char const * const name{"direct"};
20254 static constexpr char const * const typestr{"SgExpression*"};
20255 static constexpr bool traverse{false};
20256 static constexpr auto mbr_ptr{&SgInquireStatement::p_direct};
20257 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20258 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_direct>;
20259};
20260template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_formatted> {
20261 using parent = SgInquireStatement;
20262 using field_type = SgExpression*;
20263 static constexpr size_t position{12};
20264 static constexpr char const * const name{"formatted"};
20265 static constexpr char const * const typestr{"SgExpression*"};
20266 static constexpr bool traverse{false};
20267 static constexpr auto mbr_ptr{&SgInquireStatement::p_formatted};
20268 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20269 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_formatted>;
20270};
20271template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_unformatted> {
20272 using parent = SgInquireStatement;
20273 using field_type = SgExpression*;
20274 static constexpr size_t position{13};
20275 static constexpr char const * const name{"unformatted"};
20276 static constexpr char const * const typestr{"SgExpression*"};
20277 static constexpr bool traverse{false};
20278 static constexpr auto mbr_ptr{&SgInquireStatement::p_unformatted};
20279 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20280 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_unformatted>;
20281};
20282template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_nextrec> {
20283 using parent = SgInquireStatement;
20284 using field_type = SgExpression*;
20285 static constexpr size_t position{14};
20286 static constexpr char const * const name{"nextrec"};
20287 static constexpr char const * const typestr{"SgExpression*"};
20288 static constexpr bool traverse{false};
20289 static constexpr auto mbr_ptr{&SgInquireStatement::p_nextrec};
20290 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20291 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_nextrec>;
20292};
20293template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_position> {
20294 using parent = SgInquireStatement;
20295 using field_type = SgExpression*;
20296 static constexpr size_t position{15};
20297 static constexpr char const * const name{"position"};
20298 static constexpr char const * const typestr{"SgExpression*"};
20299 static constexpr bool traverse{false};
20300 static constexpr auto mbr_ptr{&SgInquireStatement::p_position};
20301 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20302 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_position>;
20303};
20304template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_action> {
20305 using parent = SgInquireStatement;
20306 using field_type = SgExpression*;
20307 static constexpr size_t position{16};
20308 static constexpr char const * const name{"action"};
20309 static constexpr char const * const typestr{"SgExpression*"};
20310 static constexpr bool traverse{false};
20311 static constexpr auto mbr_ptr{&SgInquireStatement::p_action};
20312 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20313 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_action>;
20314};
20315template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_read> {
20316 using parent = SgInquireStatement;
20317 using field_type = SgExpression*;
20318 static constexpr size_t position{17};
20319 static constexpr char const * const name{"read"};
20320 static constexpr char const * const typestr{"SgExpression*"};
20321 static constexpr bool traverse{false};
20322 static constexpr auto mbr_ptr{&SgInquireStatement::p_read};
20323 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20324 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_read>;
20325};
20326template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_write> {
20327 using parent = SgInquireStatement;
20328 using field_type = SgExpression*;
20329 static constexpr size_t position{18};
20330 static constexpr char const * const name{"write"};
20331 static constexpr char const * const typestr{"SgExpression*"};
20332 static constexpr bool traverse{false};
20333 static constexpr auto mbr_ptr{&SgInquireStatement::p_write};
20334 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20335 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_write>;
20336};
20337template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_readwrite> {
20338 using parent = SgInquireStatement;
20339 using field_type = SgExpression*;
20340 static constexpr size_t position{19};
20341 static constexpr char const * const name{"readwrite"};
20342 static constexpr char const * const typestr{"SgExpression*"};
20343 static constexpr bool traverse{false};
20344 static constexpr auto mbr_ptr{&SgInquireStatement::p_readwrite};
20345 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20346 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_readwrite>;
20347};
20348template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_delim> {
20349 using parent = SgInquireStatement;
20350 using field_type = SgExpression*;
20351 static constexpr size_t position{20};
20352 static constexpr char const * const name{"delim"};
20353 static constexpr char const * const typestr{"SgExpression*"};
20354 static constexpr bool traverse{false};
20355 static constexpr auto mbr_ptr{&SgInquireStatement::p_delim};
20356 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20357 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_delim>;
20358};
20359template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_pad> {
20360 using parent = SgInquireStatement;
20361 using field_type = SgExpression*;
20362 static constexpr size_t position{21};
20363 static constexpr char const * const name{"pad"};
20364 static constexpr char const * const typestr{"SgExpression*"};
20365 static constexpr bool traverse{false};
20366 static constexpr auto mbr_ptr{&SgInquireStatement::p_pad};
20367 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20368 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_pad>;
20369};
20370template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_asynchronous> {
20371 using parent = SgInquireStatement;
20372 using field_type = SgExpression*;
20373 static constexpr size_t position{22};
20374 static constexpr char const * const name{"asynchronous"};
20375 static constexpr char const * const typestr{"SgExpression*"};
20376 static constexpr bool traverse{false};
20377 static constexpr auto mbr_ptr{&SgInquireStatement::p_asynchronous};
20378 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20379 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_asynchronous>;
20380};
20381template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_decimal> {
20382 using parent = SgInquireStatement;
20383 using field_type = SgExpression*;
20384 static constexpr size_t position{23};
20385 static constexpr char const * const name{"decimal"};
20386 static constexpr char const * const typestr{"SgExpression*"};
20387 static constexpr bool traverse{false};
20388 static constexpr auto mbr_ptr{&SgInquireStatement::p_decimal};
20389 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20390 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_decimal>;
20391};
20392template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_stream> {
20393 using parent = SgInquireStatement;
20394 using field_type = SgExpression*;
20395 static constexpr size_t position{24};
20396 static constexpr char const * const name{"stream"};
20397 static constexpr char const * const typestr{"SgExpression*"};
20398 static constexpr bool traverse{false};
20399 static constexpr auto mbr_ptr{&SgInquireStatement::p_stream};
20400 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20401 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_stream>;
20402};
20403template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_size> {
20404 using parent = SgInquireStatement;
20405 using field_type = SgExpression*;
20406 static constexpr size_t position{25};
20407 static constexpr char const * const name{"size"};
20408 static constexpr char const * const typestr{"SgExpression*"};
20409 static constexpr bool traverse{false};
20410 static constexpr auto mbr_ptr{&SgInquireStatement::p_size};
20411 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20412 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_size>;
20413};
20414template <> struct describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_pending> {
20415 using parent = SgInquireStatement;
20416 using field_type = SgExpression*;
20417 static constexpr size_t position{26};
20418 static constexpr char const * const name{"pending"};
20419 static constexpr char const * const typestr{"SgExpression*"};
20420 static constexpr bool traverse{false};
20421 static constexpr auto mbr_ptr{&SgInquireStatement::p_pending};
20422 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20423 using bind = Desc<SgInquireStatement, SgExpression* SgInquireStatement::*, &SgInquireStatement::p_pending>;
20424};
20425template <> struct describe_field_t<SgInquireStatement,SgVarRefExp*,&SgInquireStatement::p_iolengthExp> {
20426 using parent = SgInquireStatement;
20427 using field_type = SgVarRefExp*;
20428 static constexpr size_t position{27};
20429 static constexpr char const * const name{"iolengthExp"};
20430 static constexpr char const * const typestr{"SgVarRefExp*"};
20431 static constexpr bool traverse{false};
20432 static constexpr auto mbr_ptr{&SgInquireStatement::p_iolengthExp};
20433 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20434 using bind = Desc<SgInquireStatement, SgVarRefExp* SgInquireStatement::*, &SgInquireStatement::p_iolengthExp>;
20435};
20437 using node = SgInquireStatement;
20438 using base = SgIOStatement;
20439 static constexpr char const * const name{"InquireStatement"};
20440 static constexpr unsigned long variant{478};
20441 static constexpr bool concrete{true};
20442 using subclasses_t = mp::List<>;
20443 using fields_t = mp::List<describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_file>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_access>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_form>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_recl>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_blank>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_exist>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_opened>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_number>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_named>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_name>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_sequential>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_direct>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_formatted>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_unformatted>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_nextrec>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_position>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_action>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_read>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_write>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_readwrite>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_delim>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_pad>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_asynchronous>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_decimal>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_stream>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_size>, describe_field_t<SgInquireStatement,SgExpression*,&SgInquireStatement::p_pending>, describe_field_t<SgInquireStatement,SgVarRefExp*,&SgInquireStatement::p_iolengthExp>>;
20444};
20445template <> struct node_from_variant_t<478> { using type = SgInquireStatement; };
20446
20447// Class: IntKeyedBidirectionalGraph
20450 using base = SgBidirectionalGraph;
20451 static constexpr char const * const name{"IntKeyedBidirectionalGraph"};
20452 static constexpr unsigned long variant{479};
20453 static constexpr bool concrete{true};
20454 using subclasses_t = mp::List<>;
20455 using fields_t = mp::List<>;
20456};
20457template <> struct node_from_variant_t<479> { using type = SgIntKeyedBidirectionalGraph; };
20458
20459// Class: IntVal
20460template <> struct describe_field_t<SgIntVal,int,&SgIntVal::p_value> {
20461 using parent = SgIntVal;
20462 using field_type = int;
20463 static constexpr size_t position{0};
20464 static constexpr char const * const name{"value"};
20465 static constexpr char const * const typestr{"int"};
20466 static constexpr bool traverse{false};
20467 static constexpr auto mbr_ptr{&SgIntVal::p_value};
20468 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20469 using bind = Desc<SgIntVal, int SgIntVal::*, &SgIntVal::p_value>;
20470};
20471template <> struct describe_field_t<SgIntVal,std::string,&SgIntVal::p_valueString> {
20472 using parent = SgIntVal;
20473 using field_type = std::string;
20474 static constexpr size_t position{1};
20475 static constexpr char const * const name{"valueString"};
20476 static constexpr char const * const typestr{"std::string"};
20477 static constexpr bool traverse{false};
20478 static constexpr auto mbr_ptr{&SgIntVal::p_valueString};
20479 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20480 using bind = Desc<SgIntVal, std::string SgIntVal::*, &SgIntVal::p_valueString>;
20481};
20482template <> struct describe_node_t<SgIntVal> {
20483 using node = SgIntVal;
20484 using base = SgValueExp;
20485 static constexpr char const * const name{"IntVal"};
20486 static constexpr unsigned long variant{480};
20487 static constexpr bool concrete{true};
20488 using subclasses_t = mp::List<>;
20490};
20491template <> struct node_from_variant_t<480> { using type = SgIntVal; };
20492
20493// Class: IntegerDivideOp
20495 using node = SgIntegerDivideOp;
20496 using base = SgBinaryOp;
20497 static constexpr char const * const name{"IntegerDivideOp"};
20498 static constexpr unsigned long variant{481};
20499 static constexpr bool concrete{true};
20500 using subclasses_t = mp::List<>;
20501 using fields_t = mp::List<>;
20502};
20503template <> struct node_from_variant_t<481> { using type = SgIntegerDivideOp; };
20504
20505// Class: IntegerDivideAssignOp
20508 using base = SgCompoundAssignOp;
20509 static constexpr char const * const name{"IntegerDivideAssignOp"};
20510 static constexpr unsigned long variant{482};
20511 static constexpr bool concrete{true};
20512 using subclasses_t = mp::List<>;
20513 using fields_t = mp::List<>;
20514};
20515template <> struct node_from_variant_t<482> { using type = SgIntegerDivideAssignOp; };
20516
20517// Class: InterfaceBody
20518template <> struct describe_field_t<SgInterfaceBody,SgName,&SgInterfaceBody::p_function_name> {
20519 using parent = SgInterfaceBody;
20520 using field_type = SgName;
20521 static constexpr size_t position{0};
20522 static constexpr char const * const name{"function_name"};
20523 static constexpr char const * const typestr{"SgName"};
20524 static constexpr bool traverse{false};
20525 static constexpr auto mbr_ptr{&SgInterfaceBody::p_function_name};
20526 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20527 using bind = Desc<SgInterfaceBody, SgName SgInterfaceBody::*, &SgInterfaceBody::p_function_name>;
20528};
20529template <> struct describe_field_t<SgInterfaceBody,SgFunctionDeclaration*,&SgInterfaceBody::p_functionDeclaration> {
20530 using parent = SgInterfaceBody;
20532 static constexpr size_t position{1};
20533 static constexpr char const * const name{"functionDeclaration"};
20534 static constexpr char const * const typestr{"SgFunctionDeclaration*"};
20535 static constexpr bool traverse{false};
20536 static constexpr auto mbr_ptr{&SgInterfaceBody::p_functionDeclaration};
20537 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20538 using bind = Desc<SgInterfaceBody, SgFunctionDeclaration* SgInterfaceBody::*, &SgInterfaceBody::p_functionDeclaration>;
20539};
20540template <> struct describe_field_t<SgInterfaceBody,bool,&SgInterfaceBody::p_use_function_name> {
20541 using parent = SgInterfaceBody;
20542 using field_type = bool;
20543 static constexpr size_t position{2};
20544 static constexpr char const * const name{"use_function_name"};
20545 static constexpr char const * const typestr{"bool"};
20546 static constexpr bool traverse{false};
20547 static constexpr auto mbr_ptr{&SgInterfaceBody::p_use_function_name};
20548 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20549 using bind = Desc<SgInterfaceBody, bool SgInterfaceBody::*, &SgInterfaceBody::p_use_function_name>;
20550};
20552 using node = SgInterfaceBody;
20553 using base = SgLocatedNodeSupport;
20554 static constexpr char const * const name{"InterfaceBody"};
20555 static constexpr unsigned long variant{483};
20556 static constexpr bool concrete{true};
20557 using subclasses_t = mp::List<>;
20559};
20560template <> struct node_from_variant_t<483> { using type = SgInterfaceBody; };
20561
20562// Class: HeaderFileBody
20563template <> struct describe_field_t<SgHeaderFileBody,SgSourceFile*,&SgHeaderFileBody::p_include_file> {
20564 using parent = SgHeaderFileBody;
20565 using field_type = SgSourceFile*;
20566 static constexpr size_t position{0};
20567 static constexpr char const * const name{"include_file"};
20568 static constexpr char const * const typestr{"SgSourceFile*"};
20569 static constexpr bool traverse{false};
20570 static constexpr auto mbr_ptr{&SgHeaderFileBody::p_include_file};
20571 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20572 using bind = Desc<SgHeaderFileBody, SgSourceFile* SgHeaderFileBody::*, &SgHeaderFileBody::p_include_file>;
20573};
20575 using node = SgHeaderFileBody;
20576 using base = SgLocatedNodeSupport;
20577 static constexpr char const * const name{"HeaderFileBody"};
20578 static constexpr unsigned long variant{484};
20579 static constexpr bool concrete{true};
20580 using subclasses_t = mp::List<>;
20582};
20583template <> struct node_from_variant_t<484> { using type = SgHeaderFileBody; };
20584
20585// Class: HeaderFileReport
20586template <> struct describe_field_t<SgHeaderFileReport,SgSourceFile*,&SgHeaderFileReport::p_source_file> {
20587 using parent = SgHeaderFileReport;
20588 using field_type = SgSourceFile*;
20589 static constexpr size_t position{0};
20590 static constexpr char const * const name{"source_file"};
20591 static constexpr char const * const typestr{"SgSourceFile*"};
20592 static constexpr bool traverse{false};
20593 static constexpr auto mbr_ptr{&SgHeaderFileReport::p_source_file};
20594 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20595 using bind = Desc<SgHeaderFileReport, SgSourceFile* SgHeaderFileReport::*, &SgHeaderFileReport::p_source_file>;
20596};
20597template <> struct describe_field_t<SgHeaderFileReport,SgSourceFilePtrList,&SgHeaderFileReport::p_include_file_list> {
20598 using parent = SgHeaderFileReport;
20599 using field_type = SgSourceFilePtrList;
20600 static constexpr size_t position{1};
20601 static constexpr char const * const name{"include_file_list"};
20602 static constexpr char const * const typestr{"SgSourceFilePtrList"};
20603 static constexpr bool traverse{false};
20604 static constexpr auto mbr_ptr{&SgHeaderFileReport::p_include_file_list};
20605 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20606 using bind = Desc<SgHeaderFileReport, SgSourceFilePtrList SgHeaderFileReport::*, &SgHeaderFileReport::p_include_file_list>;
20607};
20609 using node = SgHeaderFileReport;
20610 using base = SgSupport;
20611 static constexpr char const * const name{"HeaderFileReport"};
20612 static constexpr unsigned long variant{485};
20613 static constexpr bool concrete{true};
20614 using subclasses_t = mp::List<>;
20616};
20617template <> struct node_from_variant_t<485> { using type = SgHeaderFileReport; };
20618
20619// Class: InterfaceStatement
20620template <> struct describe_field_t<SgInterfaceStatement,SgName,&SgInterfaceStatement::p_name> {
20622 using field_type = SgName;
20623 static constexpr size_t position{0};
20624 static constexpr char const * const name{"name"};
20625 static constexpr char const * const typestr{"SgName"};
20626 static constexpr bool traverse{false};
20627 static constexpr auto mbr_ptr{&SgInterfaceStatement::p_name};
20628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20629 using bind = Desc<SgInterfaceStatement, SgName SgInterfaceStatement::*, &SgInterfaceStatement::p_name>;
20630};
20631template <> struct describe_field_t<SgInterfaceStatement,SgInterfaceStatement::generic_spec_enum,&SgInterfaceStatement::p_generic_spec> {
20634 static constexpr size_t position{1};
20635 static constexpr char const * const name{"generic_spec"};
20636 static constexpr char const * const typestr{"SgInterfaceStatement::generic_spec_enum"};
20637 static constexpr bool traverse{false};
20638 static constexpr auto mbr_ptr{&SgInterfaceStatement::p_generic_spec};
20639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20640 using bind = Desc<SgInterfaceStatement, SgInterfaceStatement::generic_spec_enum SgInterfaceStatement::*, &SgInterfaceStatement::p_generic_spec>;
20641};
20642template <> struct describe_field_t<SgInterfaceStatement,SgInterfaceBodyPtrList,&SgInterfaceStatement::p_interface_body_list> {
20644 using field_type = SgInterfaceBodyPtrList;
20645 static constexpr size_t position{2};
20646 static constexpr char const * const name{"interface_body_list"};
20647 static constexpr char const * const typestr{"SgInterfaceBodyPtrList"};
20648 static constexpr bool traverse{true};
20649 static constexpr auto mbr_ptr{&SgInterfaceStatement::p_interface_body_list};
20650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20651 using bind = Desc<SgInterfaceStatement, SgInterfaceBodyPtrList SgInterfaceStatement::*, &SgInterfaceStatement::p_interface_body_list>;
20652};
20653template <> struct describe_field_t<SgInterfaceStatement,SgLabelRefExp*,&SgInterfaceStatement::p_end_numeric_label> {
20655 using field_type = SgLabelRefExp*;
20656 static constexpr size_t position{3};
20657 static constexpr char const * const name{"end_numeric_label"};
20658 static constexpr char const * const typestr{"SgLabelRefExp*"};
20659 static constexpr bool traverse{false};
20660 static constexpr auto mbr_ptr{&SgInterfaceStatement::p_end_numeric_label};
20661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20662 using bind = Desc<SgInterfaceStatement, SgLabelRefExp* SgInterfaceStatement::*, &SgInterfaceStatement::p_end_numeric_label>;
20663};
20673template <> struct node_from_variant_t<486> { using type = SgInterfaceStatement; };
20674
20675// Class: InterfaceSymbol
20676template <> struct describe_field_t<SgInterfaceSymbol,SgInterfaceStatement*,&SgInterfaceSymbol::p_declaration> {
20677 using parent = SgInterfaceSymbol;
20679 static constexpr size_t position{0};
20680 static constexpr char const * const name{"declaration"};
20681 static constexpr char const * const typestr{"SgInterfaceStatement*"};
20682 static constexpr bool traverse{false};
20683 static constexpr auto mbr_ptr{&SgInterfaceSymbol::p_declaration};
20684 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20685 using bind = Desc<SgInterfaceSymbol, SgInterfaceStatement* SgInterfaceSymbol::*, &SgInterfaceSymbol::p_declaration>;
20686};
20688 using node = SgInterfaceSymbol;
20689 using base = SgSymbol;
20690 static constexpr char const * const name{"InterfaceSymbol"};
20691 static constexpr unsigned long variant{487};
20692 static constexpr bool concrete{true};
20693 using subclasses_t = mp::List<>;
20695};
20696template <> struct node_from_variant_t<487> { using type = SgInterfaceSymbol; };
20697
20698// Class: IntrinsicSymbol
20699template <> struct describe_field_t<SgIntrinsicSymbol,SgInitializedName*,&SgIntrinsicSymbol::p_declaration> {
20700 using parent = SgIntrinsicSymbol;
20702 static constexpr size_t position{0};
20703 static constexpr char const * const name{"declaration"};
20704 static constexpr char const * const typestr{"SgInitializedName*"};
20705 static constexpr bool traverse{false};
20706 static constexpr auto mbr_ptr{&SgIntrinsicSymbol::p_declaration};
20707 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20708 using bind = Desc<SgIntrinsicSymbol, SgInitializedName* SgIntrinsicSymbol::*, &SgIntrinsicSymbol::p_declaration>;
20709};
20711 using node = SgIntrinsicSymbol;
20712 using base = SgSymbol;
20713 static constexpr char const * const name{"IntrinsicSymbol"};
20714 static constexpr unsigned long variant{488};
20715 static constexpr bool concrete{true};
20716 using subclasses_t = mp::List<>;
20718};
20719template <> struct node_from_variant_t<488> { using type = SgIntrinsicSymbol; };
20720
20721// Class: IsOp
20722template <> struct describe_node_t<SgIsOp> {
20723 using node = SgIsOp;
20724 using base = SgBinaryOp;
20725 static constexpr char const * const name{"IsOp"};
20726 static constexpr unsigned long variant{489};
20727 static constexpr bool concrete{true};
20728 using subclasses_t = mp::List<>;
20729 using fields_t = mp::List<>;
20730};
20731template <> struct node_from_variant_t<489> { using type = SgIsOp; };
20732
20733// Class: IsNotOp
20734template <> struct describe_node_t<SgIsNotOp> {
20735 using node = SgIsNotOp;
20736 using base = SgBinaryOp;
20737 static constexpr char const * const name{"IsNotOp"};
20738 static constexpr unsigned long variant{490};
20739 static constexpr bool concrete{true};
20740 using subclasses_t = mp::List<>;
20741 using fields_t = mp::List<>;
20742};
20743template <> struct node_from_variant_t<490> { using type = SgIsNotOp; };
20744
20745// Class: IorAssignOp
20746template <> struct describe_node_t<SgIorAssignOp> {
20747 using node = SgIorAssignOp;
20748 using base = SgCompoundAssignOp;
20749 static constexpr char const * const name{"IorAssignOp"};
20750 static constexpr unsigned long variant{491};
20751 static constexpr bool concrete{true};
20752 using subclasses_t = mp::List<>;
20753 using fields_t = mp::List<>;
20754};
20755template <> struct node_from_variant_t<491> { using type = SgIorAssignOp; };
20756
20757// Class: JovialBitType
20758template <> struct describe_field_t<SgJovialBitType,SgExpression*,&SgJovialBitType::p_size> {
20759 using parent = SgJovialBitType;
20760 using field_type = SgExpression*;
20761 static constexpr size_t position{0};
20762 static constexpr char const * const name{"size"};
20763 static constexpr char const * const typestr{"SgExpression*"};
20764 static constexpr bool traverse{false};
20765 static constexpr auto mbr_ptr{&SgJovialBitType::p_size};
20766 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20767 using bind = Desc<SgJovialBitType, SgExpression* SgJovialBitType::*, &SgJovialBitType::p_size>;
20768};
20770 using node = SgJovialBitType;
20771 using base = SgType;
20772 static constexpr char const * const name{"JovialBitType"};
20773 static constexpr unsigned long variant{492};
20774 static constexpr bool concrete{true};
20775 using subclasses_t = mp::List<>;
20777};
20778template <> struct node_from_variant_t<492> { using type = SgJovialBitType; };
20779
20780// Class: JovialBitVal
20781template <> struct describe_field_t<SgJovialBitVal,std::string,&SgJovialBitVal::p_valueString> {
20782 using parent = SgJovialBitVal;
20783 using field_type = std::string;
20784 static constexpr size_t position{0};
20785 static constexpr char const * const name{"valueString"};
20786 static constexpr char const * const typestr{"std::string"};
20787 static constexpr bool traverse{false};
20788 static constexpr auto mbr_ptr{&SgJovialBitVal::p_valueString};
20789 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20790 using bind = Desc<SgJovialBitVal, std::string SgJovialBitVal::*, &SgJovialBitVal::p_valueString>;
20791};
20792template <> struct describe_node_t<SgJovialBitVal> {
20793 using node = SgJovialBitVal;
20794 using base = SgValueExp;
20795 static constexpr char const * const name{"JovialBitVal"};
20796 static constexpr unsigned long variant{493};
20797 static constexpr bool concrete{true};
20798 using subclasses_t = mp::List<>;
20800};
20801template <> struct node_from_variant_t<493> { using type = SgJovialBitVal; };
20802
20803// Class: JovialTableType
20804template <> struct describe_field_t<SgJovialTableType,SgType*,&SgJovialTableType::p_base_type> {
20805 using parent = SgJovialTableType;
20806 using field_type = SgType*;
20807 static constexpr size_t position{0};
20808 static constexpr char const * const name{"base_type"};
20809 static constexpr char const * const typestr{"SgType*"};
20810 static constexpr bool traverse{false};
20811 static constexpr auto mbr_ptr{&SgJovialTableType::p_base_type};
20812 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20813 using bind = Desc<SgJovialTableType, SgType* SgJovialTableType::*, &SgJovialTableType::p_base_type>;
20814};
20815template <> struct describe_field_t<SgJovialTableType,SgExprListExp*,&SgJovialTableType::p_dim_info> {
20816 using parent = SgJovialTableType;
20817 using field_type = SgExprListExp*;
20818 static constexpr size_t position{1};
20819 static constexpr char const * const name{"dim_info"};
20820 static constexpr char const * const typestr{"SgExprListExp*"};
20821 static constexpr bool traverse{true};
20822 static constexpr auto mbr_ptr{&SgJovialTableType::p_dim_info};
20823 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20824 using bind = Desc<SgJovialTableType, SgExprListExp* SgJovialTableType::*, &SgJovialTableType::p_dim_info>;
20825};
20826template <> struct describe_field_t<SgJovialTableType,int,&SgJovialTableType::p_rank> {
20827 using parent = SgJovialTableType;
20828 using field_type = int;
20829 static constexpr size_t position{2};
20830 static constexpr char const * const name{"rank"};
20831 static constexpr char const * const typestr{"int"};
20832 static constexpr bool traverse{false};
20833 static constexpr auto mbr_ptr{&SgJovialTableType::p_rank};
20834 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20835 using bind = Desc<SgJovialTableType, int SgJovialTableType::*, &SgJovialTableType::p_rank>;
20836};
20837template <> struct describe_field_t<SgJovialTableType,SgJovialTableType::StructureSpecifier,&SgJovialTableType::p_structure_specifier> {
20838 using parent = SgJovialTableType;
20840 static constexpr size_t position{3};
20841 static constexpr char const * const name{"structure_specifier"};
20842 static constexpr char const * const typestr{"SgJovialTableType::StructureSpecifier"};
20843 static constexpr bool traverse{false};
20844 static constexpr auto mbr_ptr{&SgJovialTableType::p_structure_specifier};
20845 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20846 using bind = Desc<SgJovialTableType, SgJovialTableType::StructureSpecifier SgJovialTableType::*, &SgJovialTableType::p_structure_specifier>;
20847};
20848template <> struct describe_field_t<SgJovialTableType,unsigned int,&SgJovialTableType::p_bits_per_entry> {
20849 using parent = SgJovialTableType;
20850 using field_type = unsigned int;
20851 static constexpr size_t position{4};
20852 static constexpr char const * const name{"bits_per_entry"};
20853 static constexpr char const * const typestr{"unsigned int"};
20854 static constexpr bool traverse{false};
20855 static constexpr auto mbr_ptr{&SgJovialTableType::p_bits_per_entry};
20856 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20857 using bind = Desc<SgJovialTableType, unsigned int SgJovialTableType::*, &SgJovialTableType::p_bits_per_entry>;
20858};
20868template <> struct node_from_variant_t<494> { using type = SgJovialTableType; };
20869
20870// Class: JovialCompoolStatement
20871template <> struct describe_field_t<SgJovialCompoolStatement,SgName,&SgJovialCompoolStatement::p_name> {
20873 using field_type = SgName;
20874 static constexpr size_t position{0};
20875 static constexpr char const * const name{"name"};
20876 static constexpr char const * const typestr{"SgName"};
20877 static constexpr bool traverse{false};
20878 static constexpr auto mbr_ptr{&SgJovialCompoolStatement::p_name};
20879 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20880 using bind = Desc<SgJovialCompoolStatement, SgName SgJovialCompoolStatement::*, &SgJovialCompoolStatement::p_name>;
20881};
20885 static constexpr char const * const name{"JovialCompoolStatement"};
20886 static constexpr unsigned long variant{495};
20887 static constexpr bool concrete{true};
20888 using subclasses_t = mp::List<>;
20890};
20891template <> struct node_from_variant_t<495> { using type = SgJovialCompoolStatement; };
20892
20893// Class: JovialForThenStatement
20894template <> struct describe_field_t<SgJovialForThenStatement,SgExpression*,&SgJovialForThenStatement::p_initialization> {
20896 using field_type = SgExpression*;
20897 static constexpr size_t position{0};
20898 static constexpr char const * const name{"initialization"};
20899 static constexpr char const * const typestr{"SgExpression*"};
20900 static constexpr bool traverse{true};
20901 static constexpr auto mbr_ptr{&SgJovialForThenStatement::p_initialization};
20902 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20903 using bind = Desc<SgJovialForThenStatement, SgExpression* SgJovialForThenStatement::*, &SgJovialForThenStatement::p_initialization>;
20904};
20905template <> struct describe_field_t<SgJovialForThenStatement,SgExpression*,&SgJovialForThenStatement::p_while_expression> {
20907 using field_type = SgExpression*;
20908 static constexpr size_t position{1};
20909 static constexpr char const * const name{"while_expression"};
20910 static constexpr char const * const typestr{"SgExpression*"};
20911 static constexpr bool traverse{true};
20912 static constexpr auto mbr_ptr{&SgJovialForThenStatement::p_while_expression};
20913 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20914 using bind = Desc<SgJovialForThenStatement, SgExpression* SgJovialForThenStatement::*, &SgJovialForThenStatement::p_while_expression>;
20915};
20916template <> struct describe_field_t<SgJovialForThenStatement,SgExpression*,&SgJovialForThenStatement::p_by_or_then_expression> {
20918 using field_type = SgExpression*;
20919 static constexpr size_t position{2};
20920 static constexpr char const * const name{"by_or_then_expression"};
20921 static constexpr char const * const typestr{"SgExpression*"};
20922 static constexpr bool traverse{true};
20923 static constexpr auto mbr_ptr{&SgJovialForThenStatement::p_by_or_then_expression};
20924 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20925 using bind = Desc<SgJovialForThenStatement, SgExpression* SgJovialForThenStatement::*, &SgJovialForThenStatement::p_by_or_then_expression>;
20926};
20927template <> struct describe_field_t<SgJovialForThenStatement,SgBasicBlock*,&SgJovialForThenStatement::p_loop_body> {
20929 using field_type = SgBasicBlock*;
20930 static constexpr size_t position{3};
20931 static constexpr char const * const name{"loop_body"};
20932 static constexpr char const * const typestr{"SgBasicBlock*"};
20933 static constexpr bool traverse{true};
20934 static constexpr auto mbr_ptr{&SgJovialForThenStatement::p_loop_body};
20935 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20936 using bind = Desc<SgJovialForThenStatement, SgBasicBlock* SgJovialForThenStatement::*, &SgJovialForThenStatement::p_loop_body>;
20937};
20938template <> struct describe_field_t<SgJovialForThenStatement,SgJovialForThenStatement::loop_statement_type_enum,&SgJovialForThenStatement::p_loop_statement_type> {
20941 static constexpr size_t position{4};
20942 static constexpr char const * const name{"loop_statement_type"};
20943 static constexpr char const * const typestr{"SgJovialForThenStatement::loop_statement_type_enum"};
20944 static constexpr bool traverse{false};
20945 static constexpr auto mbr_ptr{&SgJovialForThenStatement::p_loop_statement_type};
20946 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20947 using bind = Desc<SgJovialForThenStatement, SgJovialForThenStatement::loop_statement_type_enum SgJovialForThenStatement::*, &SgJovialForThenStatement::p_loop_statement_type>;
20948};
20958template <> struct node_from_variant_t<496> { using type = SgJovialForThenStatement; };
20959
20960// Class: JovialDefineDeclaration
20961template <> struct describe_field_t<SgJovialDefineDeclaration,std::string,&SgJovialDefineDeclaration::p_define_string> {
20963 using field_type = std::string;
20964 static constexpr size_t position{0};
20965 static constexpr char const * const name{"define_string"};
20966 static constexpr char const * const typestr{"std::string"};
20967 static constexpr bool traverse{false};
20968 static constexpr auto mbr_ptr{&SgJovialDefineDeclaration::p_define_string};
20969 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20970 using bind = Desc<SgJovialDefineDeclaration, std::string SgJovialDefineDeclaration::*, &SgJovialDefineDeclaration::p_define_string>;
20971};
20975 static constexpr char const * const name{"JovialDefineDeclaration"};
20976 static constexpr unsigned long variant{497};
20977 static constexpr bool concrete{true};
20978 using subclasses_t = mp::List<>;
20980};
20981template <> struct node_from_variant_t<497> { using type = SgJovialDefineDeclaration; };
20982
20983// Class: JovialDirectiveStatement
20984template <> struct describe_field_t<SgJovialDirectiveStatement,std::string,&SgJovialDirectiveStatement::p_content_string> {
20986 using field_type = std::string;
20987 static constexpr size_t position{0};
20988 static constexpr char const * const name{"content_string"};
20989 static constexpr char const * const typestr{"std::string"};
20990 static constexpr bool traverse{false};
20991 static constexpr auto mbr_ptr{&SgJovialDirectiveStatement::p_content_string};
20992 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
20993 using bind = Desc<SgJovialDirectiveStatement, std::string SgJovialDirectiveStatement::*, &SgJovialDirectiveStatement::p_content_string>;
20994};
20995template <> struct describe_field_t<SgJovialDirectiveStatement,SgJovialDirectiveStatement::directive_types,&SgJovialDirectiveStatement::p_directive_type> {
20998 static constexpr size_t position{1};
20999 static constexpr char const * const name{"directive_type"};
21000 static constexpr char const * const typestr{"SgJovialDirectiveStatement::directive_types"};
21001 static constexpr bool traverse{false};
21002 static constexpr auto mbr_ptr{&SgJovialDirectiveStatement::p_directive_type};
21003 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21004 using bind = Desc<SgJovialDirectiveStatement, SgJovialDirectiveStatement::directive_types SgJovialDirectiveStatement::*, &SgJovialDirectiveStatement::p_directive_type>;
21005};
21009 static constexpr char const * const name{"JovialDirectiveStatement"};
21010 static constexpr unsigned long variant{498};
21011 static constexpr bool concrete{true};
21012 using subclasses_t = mp::List<>;
21014};
21015template <> struct node_from_variant_t<498> { using type = SgJovialDirectiveStatement; };
21016
21017// Class: JovialOverlayDeclaration
21018template <> struct describe_field_t<SgJovialOverlayDeclaration,SgExpression*,&SgJovialOverlayDeclaration::p_address> {
21020 using field_type = SgExpression*;
21021 static constexpr size_t position{0};
21022 static constexpr char const * const name{"address"};
21023 static constexpr char const * const typestr{"SgExpression*"};
21024 static constexpr bool traverse{true};
21025 static constexpr auto mbr_ptr{&SgJovialOverlayDeclaration::p_address};
21026 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21027 using bind = Desc<SgJovialOverlayDeclaration, SgExpression* SgJovialOverlayDeclaration::*, &SgJovialOverlayDeclaration::p_address>;
21028};
21029template <> struct describe_field_t<SgJovialOverlayDeclaration,SgExprListExp*,&SgJovialOverlayDeclaration::p_overlay> {
21031 using field_type = SgExprListExp*;
21032 static constexpr size_t position{1};
21033 static constexpr char const * const name{"overlay"};
21034 static constexpr char const * const typestr{"SgExprListExp*"};
21035 static constexpr bool traverse{true};
21036 static constexpr auto mbr_ptr{&SgJovialOverlayDeclaration::p_overlay};
21037 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21038 using bind = Desc<SgJovialOverlayDeclaration, SgExprListExp* SgJovialOverlayDeclaration::*, &SgJovialOverlayDeclaration::p_overlay>;
21039};
21043 static constexpr char const * const name{"JovialOverlayDeclaration"};
21044 static constexpr unsigned long variant{499};
21045 static constexpr bool concrete{true};
21046 using subclasses_t = mp::List<>;
21048};
21049template <> struct node_from_variant_t<499> { using type = SgJovialOverlayDeclaration; };
21050
21051// Class: JovialPresetPositionExp
21052template <> struct describe_field_t<SgJovialPresetPositionExp,SgExprListExp*,&SgJovialPresetPositionExp::p_indices> {
21054 using field_type = SgExprListExp*;
21055 static constexpr size_t position{0};
21056 static constexpr char const * const name{"indices"};
21057 static constexpr char const * const typestr{"SgExprListExp*"};
21058 static constexpr bool traverse{true};
21059 static constexpr auto mbr_ptr{&SgJovialPresetPositionExp::p_indices};
21060 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21061 using bind = Desc<SgJovialPresetPositionExp, SgExprListExp* SgJovialPresetPositionExp::*, &SgJovialPresetPositionExp::p_indices>;
21062};
21063template <> struct describe_field_t<SgJovialPresetPositionExp,SgExpression*,&SgJovialPresetPositionExp::p_value> {
21065 using field_type = SgExpression*;
21066 static constexpr size_t position{1};
21067 static constexpr char const * const name{"value"};
21068 static constexpr char const * const typestr{"SgExpression*"};
21069 static constexpr bool traverse{true};
21070 static constexpr auto mbr_ptr{&SgJovialPresetPositionExp::p_value};
21071 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21072 using bind = Desc<SgJovialPresetPositionExp, SgExpression* SgJovialPresetPositionExp::*, &SgJovialPresetPositionExp::p_value>;
21073};
21076 using base = SgExpression;
21077 static constexpr char const * const name{"JovialPresetPositionExp"};
21078 static constexpr unsigned long variant{500};
21079 static constexpr bool concrete{true};
21080 using subclasses_t = mp::List<>;
21082};
21083template <> struct node_from_variant_t<500> { using type = SgJovialPresetPositionExp; };
21084
21085// Class: JovialTablePresetExp
21086template <> struct describe_field_t<SgJovialTablePresetExp,SgExprListExp*,&SgJovialTablePresetExp::p_preset_list> {
21088 using field_type = SgExprListExp*;
21089 static constexpr size_t position{0};
21090 static constexpr char const * const name{"preset_list"};
21091 static constexpr char const * const typestr{"SgExprListExp*"};
21092 static constexpr bool traverse{true};
21093 static constexpr auto mbr_ptr{&SgJovialTablePresetExp::p_preset_list};
21094 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21095 using bind = Desc<SgJovialTablePresetExp, SgExprListExp* SgJovialTablePresetExp::*, &SgJovialTablePresetExp::p_preset_list>;
21096};
21099 using base = SgExpression;
21100 static constexpr char const * const name{"JovialTablePresetExp"};
21101 static constexpr unsigned long variant{501};
21102 static constexpr bool concrete{true};
21103 using subclasses_t = mp::List<>;
21105};
21106template <> struct node_from_variant_t<501> { using type = SgJovialTablePresetExp; };
21107
21108// Class: JovialTableStatement
21109template <> struct describe_field_t<SgJovialTableStatement,SgExpression*,&SgJovialTableStatement::p_table_entry_size> {
21111 using field_type = SgExpression*;
21112 static constexpr size_t position{0};
21113 static constexpr char const * const name{"table_entry_size"};
21114 static constexpr char const * const typestr{"SgExpression*"};
21115 static constexpr bool traverse{false};
21116 static constexpr auto mbr_ptr{&SgJovialTableStatement::p_table_entry_size};
21117 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21118 using bind = Desc<SgJovialTableStatement, SgExpression* SgJovialTableStatement::*, &SgJovialTableStatement::p_table_entry_size>;
21119};
21120template <> struct describe_field_t<SgJovialTableStatement,bool,&SgJovialTableStatement::p_has_table_entry_size> {
21122 using field_type = bool;
21123 static constexpr size_t position{1};
21124 static constexpr char const * const name{"has_table_entry_size"};
21125 static constexpr char const * const typestr{"bool"};
21126 static constexpr bool traverse{false};
21127 static constexpr auto mbr_ptr{&SgJovialTableStatement::p_has_table_entry_size};
21128 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21129 using bind = Desc<SgJovialTableStatement, bool SgJovialTableStatement::*, &SgJovialTableStatement::p_has_table_entry_size>;
21130};
21131template <> struct describe_field_t<SgJovialTableStatement,SgJovialTableStatement::WordsPerEntry,&SgJovialTableStatement::p_words_per_entry> {
21134 static constexpr size_t position{2};
21135 static constexpr char const * const name{"words_per_entry"};
21136 static constexpr char const * const typestr{"SgJovialTableStatement::WordsPerEntry"};
21137 static constexpr bool traverse{false};
21138 static constexpr auto mbr_ptr{&SgJovialTableStatement::p_words_per_entry};
21139 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21140 using bind = Desc<SgJovialTableStatement, SgJovialTableStatement::WordsPerEntry SgJovialTableStatement::*, &SgJovialTableStatement::p_words_per_entry>;
21141};
21142template <> struct describe_field_t<SgJovialTableStatement,std::string,&SgJovialTableStatement::p_like_table_name> {
21144 using field_type = std::string;
21145 static constexpr size_t position{3};
21146 static constexpr char const * const name{"like_table_name"};
21147 static constexpr char const * const typestr{"std::string"};
21148 static constexpr bool traverse{false};
21149 static constexpr auto mbr_ptr{&SgJovialTableStatement::p_like_table_name};
21150 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21151 using bind = Desc<SgJovialTableStatement, std::string SgJovialTableStatement::*, &SgJovialTableStatement::p_like_table_name>;
21152};
21153template <> struct describe_field_t<SgJovialTableStatement,bool,&SgJovialTableStatement::p_has_like_option> {
21155 using field_type = bool;
21156 static constexpr size_t position{4};
21157 static constexpr char const * const name{"has_like_option"};
21158 static constexpr char const * const typestr{"bool"};
21159 static constexpr bool traverse{false};
21160 static constexpr auto mbr_ptr{&SgJovialTableStatement::p_has_like_option};
21161 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21162 using bind = Desc<SgJovialTableStatement, bool SgJovialTableStatement::*, &SgJovialTableStatement::p_has_like_option>;
21163};
21173template <> struct node_from_variant_t<502> { using type = SgJovialTableStatement; };
21174
21175// Class: KeyDatumPair
21176template <> struct describe_field_t<SgKeyDatumPair,SgExpression*,&SgKeyDatumPair::p_key> {
21177 using parent = SgKeyDatumPair;
21178 using field_type = SgExpression*;
21179 static constexpr size_t position{0};
21180 static constexpr char const * const name{"key"};
21181 static constexpr char const * const typestr{"SgExpression*"};
21182 static constexpr bool traverse{true};
21183 static constexpr auto mbr_ptr{&SgKeyDatumPair::p_key};
21184 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21185 using bind = Desc<SgKeyDatumPair, SgExpression* SgKeyDatumPair::*, &SgKeyDatumPair::p_key>;
21186};
21187template <> struct describe_field_t<SgKeyDatumPair,SgExpression*,&SgKeyDatumPair::p_datum> {
21188 using parent = SgKeyDatumPair;
21189 using field_type = SgExpression*;
21190 static constexpr size_t position{1};
21191 static constexpr char const * const name{"datum"};
21192 static constexpr char const * const typestr{"SgExpression*"};
21193 static constexpr bool traverse{true};
21194 static constexpr auto mbr_ptr{&SgKeyDatumPair::p_datum};
21195 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21196 using bind = Desc<SgKeyDatumPair, SgExpression* SgKeyDatumPair::*, &SgKeyDatumPair::p_datum>;
21197};
21198template <> struct describe_node_t<SgKeyDatumPair> {
21199 using node = SgKeyDatumPair;
21200 using base = SgExpression;
21201 static constexpr char const * const name{"KeyDatumPair"};
21202 static constexpr unsigned long variant{503};
21203 static constexpr bool concrete{true};
21204 using subclasses_t = mp::List<>;
21206};
21207template <> struct node_from_variant_t<503> { using type = SgKeyDatumPair; };
21208
21209// Class: CudaKernelExecConfig
21210template <> struct describe_field_t<SgCudaKernelExecConfig,SgExpression*,&SgCudaKernelExecConfig::p_grid> {
21212 using field_type = SgExpression*;
21213 static constexpr size_t position{0};
21214 static constexpr char const * const name{"grid"};
21215 static constexpr char const * const typestr{"SgExpression*"};
21216 static constexpr bool traverse{true};
21217 static constexpr auto mbr_ptr{&SgCudaKernelExecConfig::p_grid};
21218 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21219 using bind = Desc<SgCudaKernelExecConfig, SgExpression* SgCudaKernelExecConfig::*, &SgCudaKernelExecConfig::p_grid>;
21220};
21221template <> struct describe_field_t<SgCudaKernelExecConfig,SgExpression*,&SgCudaKernelExecConfig::p_blocks> {
21223 using field_type = SgExpression*;
21224 static constexpr size_t position{1};
21225 static constexpr char const * const name{"blocks"};
21226 static constexpr char const * const typestr{"SgExpression*"};
21227 static constexpr bool traverse{true};
21228 static constexpr auto mbr_ptr{&SgCudaKernelExecConfig::p_blocks};
21229 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21230 using bind = Desc<SgCudaKernelExecConfig, SgExpression* SgCudaKernelExecConfig::*, &SgCudaKernelExecConfig::p_blocks>;
21231};
21232template <> struct describe_field_t<SgCudaKernelExecConfig,SgExpression*,&SgCudaKernelExecConfig::p_shared> {
21234 using field_type = SgExpression*;
21235 static constexpr size_t position{2};
21236 static constexpr char const * const name{"shared"};
21237 static constexpr char const * const typestr{"SgExpression*"};
21238 static constexpr bool traverse{true};
21239 static constexpr auto mbr_ptr{&SgCudaKernelExecConfig::p_shared};
21240 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21241 using bind = Desc<SgCudaKernelExecConfig, SgExpression* SgCudaKernelExecConfig::*, &SgCudaKernelExecConfig::p_shared>;
21242};
21243template <> struct describe_field_t<SgCudaKernelExecConfig,SgExpression*,&SgCudaKernelExecConfig::p_stream> {
21245 using field_type = SgExpression*;
21246 static constexpr size_t position{3};
21247 static constexpr char const * const name{"stream"};
21248 static constexpr char const * const typestr{"SgExpression*"};
21249 static constexpr bool traverse{true};
21250 static constexpr auto mbr_ptr{&SgCudaKernelExecConfig::p_stream};
21251 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21252 using bind = Desc<SgCudaKernelExecConfig, SgExpression* SgCudaKernelExecConfig::*, &SgCudaKernelExecConfig::p_stream>;
21253};
21263template <> struct node_from_variant_t<504> { using type = SgCudaKernelExecConfig; };
21264
21265// Class: CudaKernelCallExp
21266template <> struct describe_field_t<SgCudaKernelCallExp,SgCudaKernelExecConfig*,&SgCudaKernelCallExp::p_exec_config> {
21269 static constexpr size_t position{0};
21270 static constexpr char const * const name{"exec_config"};
21271 static constexpr char const * const typestr{"SgCudaKernelExecConfig*"};
21272 static constexpr bool traverse{true};
21273 static constexpr auto mbr_ptr{&SgCudaKernelCallExp::p_exec_config};
21274 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21275 using bind = Desc<SgCudaKernelCallExp, SgCudaKernelExecConfig* SgCudaKernelCallExp::*, &SgCudaKernelCallExp::p_exec_config>;
21276};
21278 using node = SgCudaKernelCallExp;
21279 using base = SgFunctionCallExp;
21280 static constexpr char const * const name{"CudaKernelCallExp"};
21281 static constexpr unsigned long variant{505};
21282 static constexpr bool concrete{true};
21283 using subclasses_t = mp::List<>;
21285};
21286template <> struct node_from_variant_t<505> { using type = SgCudaKernelCallExp; };
21287
21288// Class: LabelRefExp
21289template <> struct describe_field_t<SgLabelRefExp,SgLabelSymbol*,&SgLabelRefExp::p_symbol> {
21290 using parent = SgLabelRefExp;
21291 using field_type = SgLabelSymbol*;
21292 static constexpr size_t position{0};
21293 static constexpr char const * const name{"symbol"};
21294 static constexpr char const * const typestr{"SgLabelSymbol*"};
21295 static constexpr bool traverse{false};
21296 static constexpr auto mbr_ptr{&SgLabelRefExp::p_symbol};
21297 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21298 using bind = Desc<SgLabelRefExp, SgLabelSymbol* SgLabelRefExp::*, &SgLabelRefExp::p_symbol>;
21299};
21300template <> struct describe_node_t<SgLabelRefExp> {
21301 using node = SgLabelRefExp;
21302 using base = SgExpression;
21303 static constexpr char const * const name{"LabelRefExp"};
21304 static constexpr unsigned long variant{506};
21305 static constexpr bool concrete{true};
21306 using subclasses_t = mp::List<>;
21308};
21309template <> struct node_from_variant_t<506> { using type = SgLabelRefExp; };
21310
21311// Class: LabelStatement
21313 using parent = SgLabelStatement;
21314 using field_type = SgName;
21315 static constexpr size_t position{0};
21316 static constexpr char const * const name{"label"};
21317 static constexpr char const * const typestr{"SgName"};
21318 static constexpr bool traverse{false};
21319 static constexpr auto mbr_ptr{&SgLabelStatement::p_label};
21320 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21321 using bind = Desc<SgLabelStatement, SgName SgLabelStatement::*, &SgLabelStatement::p_label>;
21322};
21323template <> struct describe_field_t<SgLabelStatement,SgScopeStatement*,&SgLabelStatement::p_scope> {
21324 using parent = SgLabelStatement;
21326 static constexpr size_t position{1};
21327 static constexpr char const * const name{"scope"};
21328 static constexpr char const * const typestr{"SgScopeStatement*"};
21329 static constexpr bool traverse{false};
21330 static constexpr auto mbr_ptr{&SgLabelStatement::p_scope};
21331 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21332 using bind = Desc<SgLabelStatement, SgScopeStatement* SgLabelStatement::*, &SgLabelStatement::p_scope>;
21333};
21334template <> struct describe_field_t<SgLabelStatement,SgStatement*,&SgLabelStatement::p_statement> {
21335 using parent = SgLabelStatement;
21336 using field_type = SgStatement*;
21337 static constexpr size_t position{2};
21338 static constexpr char const * const name{"statement"};
21339 static constexpr char const * const typestr{"SgStatement*"};
21340 static constexpr bool traverse{true};
21341 static constexpr auto mbr_ptr{&SgLabelStatement::p_statement};
21342 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21343 using bind = Desc<SgLabelStatement, SgStatement* SgLabelStatement::*, &SgLabelStatement::p_statement>;
21344};
21345template <> struct describe_field_t<SgLabelStatement,SgLabelStatement::label_type_enum,&SgLabelStatement::p_label_type> {
21346 using parent = SgLabelStatement;
21348 static constexpr size_t position{3};
21349 static constexpr char const * const name{"label_type"};
21350 static constexpr char const * const typestr{"SgLabelStatement::label_type_enum"};
21351 static constexpr bool traverse{false};
21352 static constexpr auto mbr_ptr{&SgLabelStatement::p_label_type};
21353 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21354 using bind = Desc<SgLabelStatement, SgLabelStatement::label_type_enum SgLabelStatement::*, &SgLabelStatement::p_label_type>;
21355};
21356template <> struct describe_field_t<SgLabelStatement,bool,&SgLabelStatement::p_gnu_extension_unused> {
21357 using parent = SgLabelStatement;
21358 using field_type = bool;
21359 static constexpr size_t position{4};
21360 static constexpr char const * const name{"gnu_extension_unused"};
21361 static constexpr char const * const typestr{"bool"};
21362 static constexpr bool traverse{false};
21363 static constexpr auto mbr_ptr{&SgLabelStatement::p_gnu_extension_unused};
21364 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21365 using bind = Desc<SgLabelStatement, bool SgLabelStatement::*, &SgLabelStatement::p_gnu_extension_unused>;
21366};
21376template <> struct node_from_variant_t<507> { using type = SgLabelStatement; };
21377
21378// Class: JavaLabelStatement
21379template <> struct describe_field_t<SgJavaLabelStatement,SgName,&SgJavaLabelStatement::p_label> {
21381 using field_type = SgName;
21382 static constexpr size_t position{0};
21383 static constexpr char const * const name{"label"};
21384 static constexpr char const * const typestr{"SgName"};
21385 static constexpr bool traverse{false};
21386 static constexpr auto mbr_ptr{&SgJavaLabelStatement::p_label};
21387 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21388 using bind = Desc<SgJavaLabelStatement, SgName SgJavaLabelStatement::*, &SgJavaLabelStatement::p_label>;
21389};
21390template <> struct describe_field_t<SgJavaLabelStatement,SgStatement*,&SgJavaLabelStatement::p_statement> {
21392 using field_type = SgStatement*;
21393 static constexpr size_t position{1};
21394 static constexpr char const * const name{"statement"};
21395 static constexpr char const * const typestr{"SgStatement*"};
21396 static constexpr bool traverse{true};
21397 static constexpr auto mbr_ptr{&SgJavaLabelStatement::p_statement};
21398 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21399 using bind = Desc<SgJavaLabelStatement, SgStatement* SgJavaLabelStatement::*, &SgJavaLabelStatement::p_statement>;
21400};
21402 using node = SgJavaLabelStatement;
21403 using base = SgScopeStatement;
21404 static constexpr char const * const name{"JavaLabelStatement"};
21405 static constexpr unsigned long variant{508};
21406 static constexpr bool concrete{true};
21407 using subclasses_t = mp::List<>;
21409};
21410template <> struct node_from_variant_t<508> { using type = SgJavaLabelStatement; };
21411
21412// Class: LabelSymbol
21413template <> struct describe_field_t<SgLabelSymbol,SgLabelStatement*,&SgLabelSymbol::p_declaration> {
21414 using parent = SgLabelSymbol;
21416 static constexpr size_t position{0};
21417 static constexpr char const * const name{"declaration"};
21418 static constexpr char const * const typestr{"SgLabelStatement*"};
21419 static constexpr bool traverse{true};
21420 static constexpr auto mbr_ptr{&SgLabelSymbol::p_declaration};
21421 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21422 using bind = Desc<SgLabelSymbol, SgLabelStatement* SgLabelSymbol::*, &SgLabelSymbol::p_declaration>;
21423};
21424template <> struct describe_field_t<SgLabelSymbol,SgStatement*,&SgLabelSymbol::p_fortran_statement> {
21425 using parent = SgLabelSymbol;
21426 using field_type = SgStatement*;
21427 static constexpr size_t position{1};
21428 static constexpr char const * const name{"fortran_statement"};
21429 static constexpr char const * const typestr{"SgStatement*"};
21430 static constexpr bool traverse{false};
21431 static constexpr auto mbr_ptr{&SgLabelSymbol::p_fortran_statement};
21432 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21433 using bind = Desc<SgLabelSymbol, SgStatement* SgLabelSymbol::*, &SgLabelSymbol::p_fortran_statement>;
21434};
21435template <> struct describe_field_t<SgLabelSymbol,SgInitializedName*,&SgLabelSymbol::p_fortran_alternate_return_parameter> {
21436 using parent = SgLabelSymbol;
21438 static constexpr size_t position{2};
21439 static constexpr char const * const name{"fortran_alternate_return_parameter"};
21440 static constexpr char const * const typestr{"SgInitializedName*"};
21441 static constexpr bool traverse{false};
21442 static constexpr auto mbr_ptr{&SgLabelSymbol::p_fortran_alternate_return_parameter};
21443 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21444 using bind = Desc<SgLabelSymbol, SgInitializedName* SgLabelSymbol::*, &SgLabelSymbol::p_fortran_alternate_return_parameter>;
21445};
21446template <> struct describe_field_t<SgLabelSymbol,int,&SgLabelSymbol::p_numeric_label_value> {
21447 using parent = SgLabelSymbol;
21448 using field_type = int;
21449 static constexpr size_t position{3};
21450 static constexpr char const * const name{"numeric_label_value"};
21451 static constexpr char const * const typestr{"int"};
21452 static constexpr bool traverse{false};
21453 static constexpr auto mbr_ptr{&SgLabelSymbol::p_numeric_label_value};
21454 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21455 using bind = Desc<SgLabelSymbol, int SgLabelSymbol::*, &SgLabelSymbol::p_numeric_label_value>;
21456};
21457template <> struct describe_field_t<SgLabelSymbol,SgLabelSymbol::label_type_enum,&SgLabelSymbol::p_label_type> {
21458 using parent = SgLabelSymbol;
21460 static constexpr size_t position{4};
21461 static constexpr char const * const name{"label_type"};
21462 static constexpr char const * const typestr{"SgLabelSymbol::label_type_enum"};
21463 static constexpr bool traverse{false};
21464 static constexpr auto mbr_ptr{&SgLabelSymbol::p_label_type};
21465 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21466 using bind = Desc<SgLabelSymbol, SgLabelSymbol::label_type_enum SgLabelSymbol::*, &SgLabelSymbol::p_label_type>;
21467};
21477template <> struct node_from_variant_t<509> { using type = SgLabelSymbol; };
21478
21479// Class: JavaLabelSymbol
21480template <> struct describe_field_t<SgJavaLabelSymbol,SgJavaLabelStatement*,&SgJavaLabelSymbol::p_declaration> {
21481 using parent = SgJavaLabelSymbol;
21483 static constexpr size_t position{0};
21484 static constexpr char const * const name{"declaration"};
21485 static constexpr char const * const typestr{"SgJavaLabelStatement*"};
21486 static constexpr bool traverse{true};
21487 static constexpr auto mbr_ptr{&SgJavaLabelSymbol::p_declaration};
21488 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21489 using bind = Desc<SgJavaLabelSymbol, SgJavaLabelStatement* SgJavaLabelSymbol::*, &SgJavaLabelSymbol::p_declaration>;
21490};
21492 using node = SgJavaLabelSymbol;
21493 using base = SgSymbol;
21494 static constexpr char const * const name{"JavaLabelSymbol"};
21495 static constexpr unsigned long variant{510};
21496 static constexpr bool concrete{true};
21497 using subclasses_t = mp::List<>;
21499};
21500template <> struct node_from_variant_t<510> { using type = SgJavaLabelSymbol; };
21501
21502// Class: LambdaCapture
21503template <> struct describe_field_t<SgLambdaCapture,SgExpression*,&SgLambdaCapture::p_capture_variable> {
21504 using parent = SgLambdaCapture;
21505 using field_type = SgExpression*;
21506 static constexpr size_t position{0};
21507 static constexpr char const * const name{"capture_variable"};
21508 static constexpr char const * const typestr{"SgExpression*"};
21509 static constexpr bool traverse{true};
21510 static constexpr auto mbr_ptr{&SgLambdaCapture::p_capture_variable};
21511 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21512 using bind = Desc<SgLambdaCapture, SgExpression* SgLambdaCapture::*, &SgLambdaCapture::p_capture_variable>;
21513};
21514template <> struct describe_field_t<SgLambdaCapture,SgExpression*,&SgLambdaCapture::p_source_closure_variable> {
21515 using parent = SgLambdaCapture;
21516 using field_type = SgExpression*;
21517 static constexpr size_t position{1};
21518 static constexpr char const * const name{"source_closure_variable"};
21519 static constexpr char const * const typestr{"SgExpression*"};
21520 static constexpr bool traverse{true};
21521 static constexpr auto mbr_ptr{&SgLambdaCapture::p_source_closure_variable};
21522 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21523 using bind = Desc<SgLambdaCapture, SgExpression* SgLambdaCapture::*, &SgLambdaCapture::p_source_closure_variable>;
21524};
21525template <> struct describe_field_t<SgLambdaCapture,SgExpression*,&SgLambdaCapture::p_closure_variable> {
21526 using parent = SgLambdaCapture;
21527 using field_type = SgExpression*;
21528 static constexpr size_t position{2};
21529 static constexpr char const * const name{"closure_variable"};
21530 static constexpr char const * const typestr{"SgExpression*"};
21531 static constexpr bool traverse{true};
21532 static constexpr auto mbr_ptr{&SgLambdaCapture::p_closure_variable};
21533 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21534 using bind = Desc<SgLambdaCapture, SgExpression* SgLambdaCapture::*, &SgLambdaCapture::p_closure_variable>;
21535};
21536template <> struct describe_field_t<SgLambdaCapture,bool,&SgLambdaCapture::p_capture_by_reference> {
21537 using parent = SgLambdaCapture;
21538 using field_type = bool;
21539 static constexpr size_t position{3};
21540 static constexpr char const * const name{"capture_by_reference"};
21541 static constexpr char const * const typestr{"bool"};
21542 static constexpr bool traverse{false};
21543 static constexpr auto mbr_ptr{&SgLambdaCapture::p_capture_by_reference};
21544 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21545 using bind = Desc<SgLambdaCapture, bool SgLambdaCapture::*, &SgLambdaCapture::p_capture_by_reference>;
21546};
21547template <> struct describe_field_t<SgLambdaCapture,bool,&SgLambdaCapture::p_implicit> {
21548 using parent = SgLambdaCapture;
21549 using field_type = bool;
21550 static constexpr size_t position{4};
21551 static constexpr char const * const name{"implicit"};
21552 static constexpr char const * const typestr{"bool"};
21553 static constexpr bool traverse{false};
21554 static constexpr auto mbr_ptr{&SgLambdaCapture::p_implicit};
21555 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21556 using bind = Desc<SgLambdaCapture, bool SgLambdaCapture::*, &SgLambdaCapture::p_implicit>;
21557};
21558template <> struct describe_field_t<SgLambdaCapture,bool,&SgLambdaCapture::p_pack_expansion> {
21559 using parent = SgLambdaCapture;
21560 using field_type = bool;
21561 static constexpr size_t position{5};
21562 static constexpr char const * const name{"pack_expansion"};
21563 static constexpr char const * const typestr{"bool"};
21564 static constexpr bool traverse{false};
21565 static constexpr auto mbr_ptr{&SgLambdaCapture::p_pack_expansion};
21566 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21567 using bind = Desc<SgLambdaCapture, bool SgLambdaCapture::*, &SgLambdaCapture::p_pack_expansion>;
21568};
21578template <> struct node_from_variant_t<511> { using type = SgLambdaCapture; };
21579
21580// Class: LambdaCaptureList
21581template <> struct describe_field_t<SgLambdaCaptureList,SgLambdaCapturePtrList,&SgLambdaCaptureList::p_capture_list> {
21583 using field_type = SgLambdaCapturePtrList;
21584 static constexpr size_t position{0};
21585 static constexpr char const * const name{"capture_list"};
21586 static constexpr char const * const typestr{"SgLambdaCapturePtrList"};
21587 static constexpr bool traverse{true};
21588 static constexpr auto mbr_ptr{&SgLambdaCaptureList::p_capture_list};
21589 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21590 using bind = Desc<SgLambdaCaptureList, SgLambdaCapturePtrList SgLambdaCaptureList::*, &SgLambdaCaptureList::p_capture_list>;
21591};
21593 using node = SgLambdaCaptureList;
21594 using base = SgLocatedNodeSupport;
21595 static constexpr char const * const name{"LambdaCaptureList"};
21596 static constexpr unsigned long variant{512};
21597 static constexpr bool concrete{true};
21598 using subclasses_t = mp::List<>;
21600};
21601template <> struct node_from_variant_t<512> { using type = SgLambdaCaptureList; };
21602
21603// Class: LambdaExp
21604template <> struct describe_field_t<SgLambdaExp,SgLambdaCaptureList*,&SgLambdaExp::p_lambda_capture_list> {
21605 using parent = SgLambdaExp;
21607 static constexpr size_t position{0};
21608 static constexpr char const * const name{"lambda_capture_list"};
21609 static constexpr char const * const typestr{"SgLambdaCaptureList*"};
21610 static constexpr bool traverse{true};
21611 static constexpr auto mbr_ptr{&SgLambdaExp::p_lambda_capture_list};
21612 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21613 using bind = Desc<SgLambdaExp, SgLambdaCaptureList* SgLambdaExp::*, &SgLambdaExp::p_lambda_capture_list>;
21614};
21615template <> struct describe_field_t<SgLambdaExp,SgClassDeclaration*,&SgLambdaExp::p_lambda_closure_class> {
21616 using parent = SgLambdaExp;
21618 static constexpr size_t position{1};
21619 static constexpr char const * const name{"lambda_closure_class"};
21620 static constexpr char const * const typestr{"SgClassDeclaration*"};
21621 static constexpr bool traverse{true};
21622 static constexpr auto mbr_ptr{&SgLambdaExp::p_lambda_closure_class};
21623 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21624 using bind = Desc<SgLambdaExp, SgClassDeclaration* SgLambdaExp::*, &SgLambdaExp::p_lambda_closure_class>;
21625};
21626template <> struct describe_field_t<SgLambdaExp,SgFunctionDeclaration*,&SgLambdaExp::p_lambda_function> {
21627 using parent = SgLambdaExp;
21629 static constexpr size_t position{2};
21630 static constexpr char const * const name{"lambda_function"};
21631 static constexpr char const * const typestr{"SgFunctionDeclaration*"};
21632 static constexpr bool traverse{true};
21633 static constexpr auto mbr_ptr{&SgLambdaExp::p_lambda_function};
21634 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21635 using bind = Desc<SgLambdaExp, SgFunctionDeclaration* SgLambdaExp::*, &SgLambdaExp::p_lambda_function>;
21636};
21637template <> struct describe_field_t<SgLambdaExp,bool,&SgLambdaExp::p_is_mutable> {
21638 using parent = SgLambdaExp;
21639 using field_type = bool;
21640 static constexpr size_t position{3};
21641 static constexpr char const * const name{"is_mutable"};
21642 static constexpr char const * const typestr{"bool"};
21643 static constexpr bool traverse{false};
21644 static constexpr auto mbr_ptr{&SgLambdaExp::p_is_mutable};
21645 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21646 using bind = Desc<SgLambdaExp, bool SgLambdaExp::*, &SgLambdaExp::p_is_mutable>;
21647};
21648template <> struct describe_field_t<SgLambdaExp,bool,&SgLambdaExp::p_capture_default> {
21649 using parent = SgLambdaExp;
21650 using field_type = bool;
21651 static constexpr size_t position{4};
21652 static constexpr char const * const name{"capture_default"};
21653 static constexpr char const * const typestr{"bool"};
21654 static constexpr bool traverse{false};
21655 static constexpr auto mbr_ptr{&SgLambdaExp::p_capture_default};
21656 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21657 using bind = Desc<SgLambdaExp, bool SgLambdaExp::*, &SgLambdaExp::p_capture_default>;
21658};
21659template <> struct describe_field_t<SgLambdaExp,bool,&SgLambdaExp::p_default_is_by_reference> {
21660 using parent = SgLambdaExp;
21661 using field_type = bool;
21662 static constexpr size_t position{5};
21663 static constexpr char const * const name{"default_is_by_reference"};
21664 static constexpr char const * const typestr{"bool"};
21665 static constexpr bool traverse{false};
21666 static constexpr auto mbr_ptr{&SgLambdaExp::p_default_is_by_reference};
21667 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21668 using bind = Desc<SgLambdaExp, bool SgLambdaExp::*, &SgLambdaExp::p_default_is_by_reference>;
21669};
21670template <> struct describe_field_t<SgLambdaExp,bool,&SgLambdaExp::p_explicit_return_type> {
21671 using parent = SgLambdaExp;
21672 using field_type = bool;
21673 static constexpr size_t position{6};
21674 static constexpr char const * const name{"explicit_return_type"};
21675 static constexpr char const * const typestr{"bool"};
21676 static constexpr bool traverse{false};
21677 static constexpr auto mbr_ptr{&SgLambdaExp::p_explicit_return_type};
21678 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21679 using bind = Desc<SgLambdaExp, bool SgLambdaExp::*, &SgLambdaExp::p_explicit_return_type>;
21680};
21681template <> struct describe_field_t<SgLambdaExp,bool,&SgLambdaExp::p_has_parameter_decl> {
21682 using parent = SgLambdaExp;
21683 using field_type = bool;
21684 static constexpr size_t position{7};
21685 static constexpr char const * const name{"has_parameter_decl"};
21686 static constexpr char const * const typestr{"bool"};
21687 static constexpr bool traverse{false};
21688 static constexpr auto mbr_ptr{&SgLambdaExp::p_has_parameter_decl};
21689 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21690 using bind = Desc<SgLambdaExp, bool SgLambdaExp::*, &SgLambdaExp::p_has_parameter_decl>;
21691};
21692template <> struct describe_field_t<SgLambdaExp,bool,&SgLambdaExp::p_is_device> {
21693 using parent = SgLambdaExp;
21694 using field_type = bool;
21695 static constexpr size_t position{8};
21696 static constexpr char const * const name{"is_device"};
21697 static constexpr char const * const typestr{"bool"};
21698 static constexpr bool traverse{false};
21699 static constexpr auto mbr_ptr{&SgLambdaExp::p_is_device};
21700 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21701 using bind = Desc<SgLambdaExp, bool SgLambdaExp::*, &SgLambdaExp::p_is_device>;
21702};
21712template <> struct node_from_variant_t<513> { using type = SgLambdaExp; };
21713
21714// Class: LambdaRefExp
21716 using parent = SgLambdaRefExp;
21718 static constexpr size_t position{0};
21719 static constexpr char const * const name{"functionDeclaration"};
21720 static constexpr char const * const typestr{"SgFunctionDeclaration*"};
21721 static constexpr bool traverse{true};
21722 static constexpr auto mbr_ptr{&SgLambdaRefExp::p_functionDeclaration};
21723 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21724 using bind = Desc<SgLambdaRefExp, SgFunctionDeclaration* SgLambdaRefExp::*, &SgLambdaRefExp::p_functionDeclaration>;
21725};
21726template <> struct describe_node_t<SgLambdaRefExp> {
21727 using node = SgLambdaRefExp;
21728 using base = SgExpression;
21729 static constexpr char const * const name{"LambdaRefExp"};
21730 static constexpr unsigned long variant{514};
21731 static constexpr bool concrete{true};
21732 using subclasses_t = mp::List<>;
21734};
21735template <> struct node_from_variant_t<514> { using type = SgLambdaRefExp; };
21736
21737// Class: LeftDivideOp
21738template <> struct describe_node_t<SgLeftDivideOp> {
21739 using node = SgLeftDivideOp;
21740 using base = SgBinaryOp;
21741 static constexpr char const * const name{"LeftDivideOp"};
21742 static constexpr unsigned long variant{515};
21743 static constexpr bool concrete{true};
21744 using subclasses_t = mp::List<>;
21745 using fields_t = mp::List<>;
21746};
21747template <> struct node_from_variant_t<515> { using type = SgLeftDivideOp; };
21748
21749// Class: LessOrEqualOp
21751 using node = SgLessOrEqualOp;
21752 using base = SgBinaryOp;
21753 static constexpr char const * const name{"LessOrEqualOp"};
21754 static constexpr unsigned long variant{516};
21755 static constexpr bool concrete{true};
21756 using subclasses_t = mp::List<>;
21757 using fields_t = mp::List<>;
21758};
21759template <> struct node_from_variant_t<516> { using type = SgLessOrEqualOp; };
21760
21761// Class: LessThanOp
21762template <> struct describe_node_t<SgLessThanOp> {
21763 using node = SgLessThanOp;
21764 using base = SgBinaryOp;
21765 static constexpr char const * const name{"LessThanOp"};
21766 static constexpr unsigned long variant{517};
21767 static constexpr bool concrete{true};
21768 using subclasses_t = mp::List<>;
21769 using fields_t = mp::List<>;
21770};
21771template <> struct node_from_variant_t<517> { using type = SgLessThanOp; };
21772
21773// Class: LineDirectiveStatement
21777 static constexpr char const * const name{"LineDirectiveStatement"};
21778 static constexpr unsigned long variant{518};
21779 static constexpr bool concrete{true};
21780 using subclasses_t = mp::List<>;
21781 using fields_t = mp::List<>;
21782};
21783template <> struct node_from_variant_t<518> { using type = SgLineDirectiveStatement; };
21784
21785// Class: LinemarkerDirectiveStatement
21786template <> struct describe_field_t<SgLinemarkerDirectiveStatement,int,&SgLinemarkerDirectiveStatement::p_linenumber> {
21788 using field_type = int;
21789 static constexpr size_t position{0};
21790 static constexpr char const * const name{"linenumber"};
21791 static constexpr char const * const typestr{"int"};
21792 static constexpr bool traverse{false};
21793 static constexpr auto mbr_ptr{&SgLinemarkerDirectiveStatement::p_linenumber};
21794 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21795 using bind = Desc<SgLinemarkerDirectiveStatement, int SgLinemarkerDirectiveStatement::*, &SgLinemarkerDirectiveStatement::p_linenumber>;
21796};
21797template <> struct describe_field_t<SgLinemarkerDirectiveStatement,std::string,&SgLinemarkerDirectiveStatement::p_filename> {
21799 using field_type = std::string;
21800 static constexpr size_t position{1};
21801 static constexpr char const * const name{"filename"};
21802 static constexpr char const * const typestr{"std::string"};
21803 static constexpr bool traverse{false};
21804 static constexpr auto mbr_ptr{&SgLinemarkerDirectiveStatement::p_filename};
21805 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21806 using bind = Desc<SgLinemarkerDirectiveStatement, std::string SgLinemarkerDirectiveStatement::*, &SgLinemarkerDirectiveStatement::p_filename>;
21807};
21808template <> struct describe_field_t<SgLinemarkerDirectiveStatement,SgUnsignedCharList,&SgLinemarkerDirectiveStatement::p_flaglist> {
21810 using field_type = SgUnsignedCharList;
21811 static constexpr size_t position{2};
21812 static constexpr char const * const name{"flaglist"};
21813 static constexpr char const * const typestr{"SgUnsignedCharList"};
21814 static constexpr bool traverse{false};
21815 static constexpr auto mbr_ptr{&SgLinemarkerDirectiveStatement::p_flaglist};
21816 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21817 using bind = Desc<SgLinemarkerDirectiveStatement, SgUnsignedCharList SgLinemarkerDirectiveStatement::*, &SgLinemarkerDirectiveStatement::p_flaglist>;
21818};
21828template <> struct node_from_variant_t<519> { using type = SgLinemarkerDirectiveStatement; };
21829
21830// Class: LinkageModifier
21831template <> struct describe_field_t<SgLinkageModifier,SgLinkageModifier::linkage_modifier_enum,&SgLinkageModifier::p_modifier> {
21832 using parent = SgLinkageModifier;
21834 static constexpr size_t position{0};
21835 static constexpr char const * const name{"modifier"};
21836 static constexpr char const * const typestr{"SgLinkageModifier::linkage_modifier_enum"};
21837 static constexpr bool traverse{false};
21838 static constexpr auto mbr_ptr{&SgLinkageModifier::p_modifier};
21839 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21840 using bind = Desc<SgLinkageModifier, SgLinkageModifier::linkage_modifier_enum SgLinkageModifier::*, &SgLinkageModifier::p_modifier>;
21841};
21843 using node = SgLinkageModifier;
21844 using base = SgModifier;
21845 static constexpr char const * const name{"LinkageModifier"};
21846 static constexpr unsigned long variant{520};
21847 static constexpr bool concrete{true};
21848 using subclasses_t = mp::List<>;
21850};
21851template <> struct node_from_variant_t<520> { using type = SgLinkageModifier; };
21852
21853// Class: ListComprehension
21854template <> struct describe_field_t<SgListComprehension,SgExpression*,&SgListComprehension::p_element> {
21856 using field_type = SgExpression*;
21857 static constexpr size_t position{0};
21858 static constexpr char const * const name{"element"};
21859 static constexpr char const * const typestr{"SgExpression*"};
21860 static constexpr bool traverse{true};
21861 static constexpr auto mbr_ptr{&SgListComprehension::p_element};
21862 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21863 using bind = Desc<SgListComprehension, SgExpression* SgListComprehension::*, &SgListComprehension::p_element>;
21864};
21865template <> struct describe_field_t<SgListComprehension,SgExprListExp*,&SgListComprehension::p_generators> {
21867 using field_type = SgExprListExp*;
21868 static constexpr size_t position{1};
21869 static constexpr char const * const name{"generators"};
21870 static constexpr char const * const typestr{"SgExprListExp*"};
21871 static constexpr bool traverse{true};
21872 static constexpr auto mbr_ptr{&SgListComprehension::p_generators};
21873 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21874 using bind = Desc<SgListComprehension, SgExprListExp* SgListComprehension::*, &SgListComprehension::p_generators>;
21875};
21877 using node = SgListComprehension;
21878 using base = SgExpression;
21879 static constexpr char const * const name{"ListComprehension"};
21880 static constexpr unsigned long variant{521};
21881 static constexpr bool concrete{true};
21882 using subclasses_t = mp::List<>;
21884};
21885template <> struct node_from_variant_t<521> { using type = SgListComprehension; };
21886
21887// Class: ListExp
21888template <> struct describe_node_t<SgListExp> {
21889 using node = SgListExp;
21890 using base = SgExprListExp;
21891 static constexpr char const * const name{"ListExp"};
21892 static constexpr unsigned long variant{522};
21893 static constexpr bool concrete{true};
21894 using subclasses_t = mp::List<>;
21895 using fields_t = mp::List<>;
21896};
21897template <> struct node_from_variant_t<522> { using type = SgListExp; };
21898
21899// Class: LocatedNode
21901 using parent = SgLocatedNode;
21902 using field_type = Sg_File_Info*;
21903 static constexpr size_t position{0};
21904 static constexpr char const * const name{"startOfConstruct"};
21905 static constexpr char const * const typestr{"Sg_File_Info*"};
21906 static constexpr bool traverse{false};
21907 static constexpr auto mbr_ptr{&SgLocatedNode::p_startOfConstruct};
21908 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21909 using bind = Desc<SgLocatedNode, Sg_File_Info* SgLocatedNode::*, &SgLocatedNode::p_startOfConstruct>;
21910};
21912 using parent = SgLocatedNode;
21913 using field_type = Sg_File_Info*;
21914 static constexpr size_t position{1};
21915 static constexpr char const * const name{"endOfConstruct"};
21916 static constexpr char const * const typestr{"Sg_File_Info*"};
21917 static constexpr bool traverse{false};
21918 static constexpr auto mbr_ptr{&SgLocatedNode::p_endOfConstruct};
21919 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21920 using bind = Desc<SgLocatedNode, Sg_File_Info* SgLocatedNode::*, &SgLocatedNode::p_endOfConstruct>;
21921};
21922template <> struct describe_field_t<SgLocatedNode,AttachedPreprocessingInfoType*,&SgLocatedNode::p_attachedPreprocessingInfoPtr> {
21923 using parent = SgLocatedNode;
21924 using field_type = AttachedPreprocessingInfoType*;
21925 static constexpr size_t position{2};
21926 static constexpr char const * const name{"attachedPreprocessingInfoPtr"};
21927 static constexpr char const * const typestr{"AttachedPreprocessingInfoType*"};
21928 static constexpr bool traverse{false};
21929 static constexpr auto mbr_ptr{&SgLocatedNode::p_attachedPreprocessingInfoPtr};
21930 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21931 using bind = Desc<SgLocatedNode, AttachedPreprocessingInfoType* SgLocatedNode::*, &SgLocatedNode::p_attachedPreprocessingInfoPtr>;
21932};
21933template <> struct describe_field_t<SgLocatedNode,AstAttributeMechanism*,&SgLocatedNode::p_attributeMechanism> {
21934 using parent = SgLocatedNode;
21936 static constexpr size_t position{3};
21937 static constexpr char const * const name{"attributeMechanism"};
21938 static constexpr char const * const typestr{"AstAttributeMechanism*"};
21939 static constexpr bool traverse{false};
21940 static constexpr auto mbr_ptr{&SgLocatedNode::p_attributeMechanism};
21941 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21942 using bind = Desc<SgLocatedNode, AstAttributeMechanism* SgLocatedNode::*, &SgLocatedNode::p_attributeMechanism>;
21943};
21944template <> struct describe_field_t<SgLocatedNode,bool,&SgLocatedNode::p_containsTransformationToSurroundingWhitespace> {
21945 using parent = SgLocatedNode;
21946 using field_type = bool;
21947 static constexpr size_t position{4};
21948 static constexpr char const * const name{"containsTransformationToSurroundingWhitespace"};
21949 static constexpr char const * const typestr{"bool"};
21950 static constexpr bool traverse{false};
21951 static constexpr auto mbr_ptr{&SgLocatedNode::p_containsTransformationToSurroundingWhitespace};
21952 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21953 using bind = Desc<SgLocatedNode, bool SgLocatedNode::*, &SgLocatedNode::p_containsTransformationToSurroundingWhitespace>;
21954};
21964template <> struct node_from_variant_t<523> { using type = SgLocatedNode; };
21965
21966// Class: LocatedNodeSupport
21968 using node = SgLocatedNodeSupport;
21969 using base = SgLocatedNode;
21970 static constexpr char const * const name{"LocatedNodeSupport"};
21971 static constexpr unsigned long variant{524};
21972 static constexpr bool concrete{false};
21974 using fields_t = mp::List<>;
21975};
21976template <> struct node_from_variant_t<524> { using type = SgLocatedNodeSupport; };
21977
21978// Class: LongDoubleVal
21980 using parent = SgLongDoubleVal;
21981 using field_type = long double;
21982 static constexpr size_t position{0};
21983 static constexpr char const * const name{"value"};
21984 static constexpr char const * const typestr{"long double"};
21985 static constexpr bool traverse{false};
21986 static constexpr auto mbr_ptr{&SgLongDoubleVal::p_value};
21987 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21988 using bind = Desc<SgLongDoubleVal, long double SgLongDoubleVal::*, &SgLongDoubleVal::p_value>;
21989};
21990template <> struct describe_field_t<SgLongDoubleVal,std::string,&SgLongDoubleVal::p_valueString> {
21991 using parent = SgLongDoubleVal;
21992 using field_type = std::string;
21993 static constexpr size_t position{1};
21994 static constexpr char const * const name{"valueString"};
21995 static constexpr char const * const typestr{"std::string"};
21996 static constexpr bool traverse{false};
21997 static constexpr auto mbr_ptr{&SgLongDoubleVal::p_valueString};
21998 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
21999 using bind = Desc<SgLongDoubleVal, std::string SgLongDoubleVal::*, &SgLongDoubleVal::p_valueString>;
22000};
22002 using node = SgLongDoubleVal;
22003 using base = SgValueExp;
22004 static constexpr char const * const name{"LongDoubleVal"};
22005 static constexpr unsigned long variant{525};
22006 static constexpr bool concrete{true};
22007 using subclasses_t = mp::List<>;
22009};
22010template <> struct node_from_variant_t<525> { using type = SgLongDoubleVal; };
22011
22012// Class: LongIntVal
22013template <> struct describe_field_t<SgLongIntVal,long int,&SgLongIntVal::p_value> {
22014 using parent = SgLongIntVal;
22015 using field_type = long int;
22016 static constexpr size_t position{0};
22017 static constexpr char const * const name{"value"};
22018 static constexpr char const * const typestr{"long int"};
22019 static constexpr bool traverse{false};
22020 static constexpr auto mbr_ptr{&SgLongIntVal::p_value};
22021 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22022 using bind = Desc<SgLongIntVal, long int SgLongIntVal::*, &SgLongIntVal::p_value>;
22023};
22024template <> struct describe_field_t<SgLongIntVal,std::string,&SgLongIntVal::p_valueString> {
22025 using parent = SgLongIntVal;
22026 using field_type = std::string;
22027 static constexpr size_t position{1};
22028 static constexpr char const * const name{"valueString"};
22029 static constexpr char const * const typestr{"std::string"};
22030 static constexpr bool traverse{false};
22031 static constexpr auto mbr_ptr{&SgLongIntVal::p_valueString};
22032 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22033 using bind = Desc<SgLongIntVal, std::string SgLongIntVal::*, &SgLongIntVal::p_valueString>;
22034};
22035template <> struct describe_node_t<SgLongIntVal> {
22036 using node = SgLongIntVal;
22037 using base = SgValueExp;
22038 static constexpr char const * const name{"LongIntVal"};
22039 static constexpr unsigned long variant{526};
22040 static constexpr bool concrete{true};
22041 using subclasses_t = mp::List<>;
22043};
22044template <> struct node_from_variant_t<526> { using type = SgLongIntVal; };
22045
22046// Class: LongLongIntVal
22047template <> struct describe_field_t<SgLongLongIntVal,long long int,&SgLongLongIntVal::p_value> {
22048 using parent = SgLongLongIntVal;
22049 using field_type = long long int;
22050 static constexpr size_t position{0};
22051 static constexpr char const * const name{"value"};
22052 static constexpr char const * const typestr{"long long int"};
22053 static constexpr bool traverse{false};
22054 static constexpr auto mbr_ptr{&SgLongLongIntVal::p_value};
22055 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22056 using bind = Desc<SgLongLongIntVal, long long int SgLongLongIntVal::*, &SgLongLongIntVal::p_value>;
22057};
22058template <> struct describe_field_t<SgLongLongIntVal,std::string,&SgLongLongIntVal::p_valueString> {
22059 using parent = SgLongLongIntVal;
22060 using field_type = std::string;
22061 static constexpr size_t position{1};
22062 static constexpr char const * const name{"valueString"};
22063 static constexpr char const * const typestr{"std::string"};
22064 static constexpr bool traverse{false};
22065 static constexpr auto mbr_ptr{&SgLongLongIntVal::p_valueString};
22066 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22067 using bind = Desc<SgLongLongIntVal, std::string SgLongLongIntVal::*, &SgLongLongIntVal::p_valueString>;
22068};
22070 using node = SgLongLongIntVal;
22071 using base = SgValueExp;
22072 static constexpr char const * const name{"LongLongIntVal"};
22073 static constexpr unsigned long variant{527};
22074 static constexpr bool concrete{true};
22075 using subclasses_t = mp::List<>;
22077};
22078template <> struct node_from_variant_t<527> { using type = SgLongLongIntVal; };
22079
22080// Class: LshiftAssignOp
22082 using node = SgLshiftAssignOp;
22083 using base = SgCompoundAssignOp;
22084 static constexpr char const * const name{"LshiftAssignOp"};
22085 static constexpr unsigned long variant{528};
22086 static constexpr bool concrete{true};
22087 using subclasses_t = mp::List<>;
22088 using fields_t = mp::List<>;
22089};
22090template <> struct node_from_variant_t<528> { using type = SgLshiftAssignOp; };
22091
22092// Class: LshiftOp
22093template <> struct describe_node_t<SgLshiftOp> {
22094 using node = SgLshiftOp;
22095 using base = SgBinaryOp;
22096 static constexpr char const * const name{"LshiftOp"};
22097 static constexpr unsigned long variant{529};
22098 static constexpr bool concrete{true};
22099 using subclasses_t = mp::List<>;
22100 using fields_t = mp::List<>;
22101};
22102template <> struct node_from_variant_t<529> { using type = SgLshiftOp; };
22103
22104// Class: MagicColonExp
22106 using node = SgMagicColonExp;
22107 using base = SgExpression;
22108 static constexpr char const * const name{"MagicColonExp"};
22109 static constexpr unsigned long variant{530};
22110 static constexpr bool concrete{true};
22111 using subclasses_t = mp::List<>;
22112 using fields_t = mp::List<>;
22113};
22114template <> struct node_from_variant_t<530> { using type = SgMagicColonExp; };
22115
22116// Class: MatrixExp
22117template <> struct describe_node_t<SgMatrixExp> {
22118 using node = SgMatrixExp;
22119 using base = SgExprListExp;
22120 static constexpr char const * const name{"MatrixExp"};
22121 static constexpr unsigned long variant{531};
22122 static constexpr bool concrete{true};
22123 using subclasses_t = mp::List<>;
22124 using fields_t = mp::List<>;
22125};
22126template <> struct node_from_variant_t<531> { using type = SgMatrixExp; };
22127
22128// Class: MatrixTransposeOp
22129template <> struct describe_field_t<SgMatrixTransposeOp,bool,&SgMatrixTransposeOp::p_is_conjugate> {
22131 using field_type = bool;
22132 static constexpr size_t position{0};
22133 static constexpr char const * const name{"is_conjugate"};
22134 static constexpr char const * const typestr{"bool"};
22135 static constexpr bool traverse{false};
22136 static constexpr auto mbr_ptr{&SgMatrixTransposeOp::p_is_conjugate};
22137 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22138 using bind = Desc<SgMatrixTransposeOp, bool SgMatrixTransposeOp::*, &SgMatrixTransposeOp::p_is_conjugate>;
22139};
22141 using node = SgMatrixTransposeOp;
22142 using base = SgUnaryOp;
22143 static constexpr char const * const name{"MatrixTransposeOp"};
22144 static constexpr unsigned long variant{532};
22145 static constexpr bool concrete{true};
22146 using subclasses_t = mp::List<>;
22148};
22149template <> struct node_from_variant_t<532> { using type = SgMatrixTransposeOp; };
22150
22151// Class: MatlabForStatement
22152template <> struct describe_field_t<SgMatlabForStatement,SgExpression*,&SgMatlabForStatement::p_index> {
22154 using field_type = SgExpression*;
22155 static constexpr size_t position{0};
22156 static constexpr char const * const name{"index"};
22157 static constexpr char const * const typestr{"SgExpression*"};
22158 static constexpr bool traverse{true};
22159 static constexpr auto mbr_ptr{&SgMatlabForStatement::p_index};
22160 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22161 using bind = Desc<SgMatlabForStatement, SgExpression* SgMatlabForStatement::*, &SgMatlabForStatement::p_index>;
22162};
22163template <> struct describe_field_t<SgMatlabForStatement,SgExpression*,&SgMatlabForStatement::p_range> {
22165 using field_type = SgExpression*;
22166 static constexpr size_t position{1};
22167 static constexpr char const * const name{"range"};
22168 static constexpr char const * const typestr{"SgExpression*"};
22169 static constexpr bool traverse{true};
22170 static constexpr auto mbr_ptr{&SgMatlabForStatement::p_range};
22171 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22172 using bind = Desc<SgMatlabForStatement, SgExpression* SgMatlabForStatement::*, &SgMatlabForStatement::p_range>;
22173};
22174template <> struct describe_field_t<SgMatlabForStatement,SgBasicBlock*,&SgMatlabForStatement::p_body> {
22176 using field_type = SgBasicBlock*;
22177 static constexpr size_t position{2};
22178 static constexpr char const * const name{"body"};
22179 static constexpr char const * const typestr{"SgBasicBlock*"};
22180 static constexpr bool traverse{true};
22181 static constexpr auto mbr_ptr{&SgMatlabForStatement::p_body};
22182 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22183 using bind = Desc<SgMatlabForStatement, SgBasicBlock* SgMatlabForStatement::*, &SgMatlabForStatement::p_body>;
22184};
22186 using node = SgMatlabForStatement;
22187 using base = SgScopeStatement;
22188 static constexpr char const * const name{"MatlabForStatement"};
22189 static constexpr unsigned long variant{533};
22190 static constexpr bool concrete{true};
22191 using subclasses_t = mp::List<>;
22193};
22194template <> struct node_from_variant_t<533> { using type = SgMatlabForStatement; };
22195
22196// Class: MemberFunctionDeclaration
22200 static constexpr size_t position{0};
22201 static constexpr char const * const name{"CtorInitializerList"};
22202 static constexpr char const * const typestr{"SgCtorInitializerList*"};
22203 static constexpr bool traverse{true};
22204 static constexpr auto mbr_ptr{&SgMemberFunctionDeclaration::p_CtorInitializerList};
22205 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22206 using bind = Desc<SgMemberFunctionDeclaration, SgCtorInitializerList* SgMemberFunctionDeclaration::*, &SgMemberFunctionDeclaration::p_CtorInitializerList>;
22207};
22208template <> struct describe_field_t<SgMemberFunctionDeclaration,SgDeclarationStatement*,&SgMemberFunctionDeclaration::p_associatedClassDeclaration> {
22211 static constexpr size_t position{1};
22212 static constexpr char const * const name{"associatedClassDeclaration"};
22213 static constexpr char const * const typestr{"SgDeclarationStatement*"};
22214 static constexpr bool traverse{false};
22215 static constexpr auto mbr_ptr{&SgMemberFunctionDeclaration::p_associatedClassDeclaration};
22216 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22217 using bind = Desc<SgMemberFunctionDeclaration, SgDeclarationStatement* SgMemberFunctionDeclaration::*, &SgMemberFunctionDeclaration::p_associatedClassDeclaration>;
22218};
22228template <> struct node_from_variant_t<534> { using type = SgMemberFunctionDeclaration; };
22229
22230// Class: MemberFunctionRefExp
22234 static constexpr size_t position{0};
22235 static constexpr char const * const name{"symbol_i"};
22236 static constexpr char const * const typestr{"SgMemberFunctionSymbol*"};
22237 static constexpr bool traverse{false};
22238 static constexpr auto mbr_ptr{&SgMemberFunctionRefExp::p_symbol_i};
22239 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22240 using bind = Desc<SgMemberFunctionRefExp, SgMemberFunctionSymbol* SgMemberFunctionRefExp::*, &SgMemberFunctionRefExp::p_symbol_i>;
22241};
22244 using field_type = int;
22245 static constexpr size_t position{1};
22246 static constexpr char const * const name{"virtual_call"};
22247 static constexpr char const * const typestr{"int"};
22248 static constexpr bool traverse{false};
22249 static constexpr auto mbr_ptr{&SgMemberFunctionRefExp::p_virtual_call};
22250 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22251 using bind = Desc<SgMemberFunctionRefExp, int SgMemberFunctionRefExp::*, &SgMemberFunctionRefExp::p_virtual_call>;
22252};
22255 using field_type = SgFunctionType*;
22256 static constexpr size_t position{2};
22257 static constexpr char const * const name{"function_type"};
22258 static constexpr char const * const typestr{"SgFunctionType*"};
22259 static constexpr bool traverse{false};
22260 static constexpr auto mbr_ptr{&SgMemberFunctionRefExp::p_function_type};
22261 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22262 using bind = Desc<SgMemberFunctionRefExp, SgFunctionType* SgMemberFunctionRefExp::*, &SgMemberFunctionRefExp::p_function_type>;
22263};
22266 using field_type = int;
22267 static constexpr size_t position{3};
22268 static constexpr char const * const name{"need_qualifier"};
22269 static constexpr char const * const typestr{"int"};
22270 static constexpr bool traverse{false};
22271 static constexpr auto mbr_ptr{&SgMemberFunctionRefExp::p_need_qualifier};
22272 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22273 using bind = Desc<SgMemberFunctionRefExp, int SgMemberFunctionRefExp::*, &SgMemberFunctionRefExp::p_need_qualifier>;
22274};
22275template <> struct describe_field_t<SgMemberFunctionRefExp,int,&SgMemberFunctionRefExp::p_name_qualification_length> {
22277 using field_type = int;
22278 static constexpr size_t position{4};
22279 static constexpr char const * const name{"name_qualification_length"};
22280 static constexpr char const * const typestr{"int"};
22281 static constexpr bool traverse{false};
22282 static constexpr auto mbr_ptr{&SgMemberFunctionRefExp::p_name_qualification_length};
22283 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22284 using bind = Desc<SgMemberFunctionRefExp, int SgMemberFunctionRefExp::*, &SgMemberFunctionRefExp::p_name_qualification_length>;
22285};
22286template <> struct describe_field_t<SgMemberFunctionRefExp,bool,&SgMemberFunctionRefExp::p_type_elaboration_required> {
22288 using field_type = bool;
22289 static constexpr size_t position{5};
22290 static constexpr char const * const name{"type_elaboration_required"};
22291 static constexpr char const * const typestr{"bool"};
22292 static constexpr bool traverse{false};
22293 static constexpr auto mbr_ptr{&SgMemberFunctionRefExp::p_type_elaboration_required};
22294 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22295 using bind = Desc<SgMemberFunctionRefExp, bool SgMemberFunctionRefExp::*, &SgMemberFunctionRefExp::p_type_elaboration_required>;
22296};
22297template <> struct describe_field_t<SgMemberFunctionRefExp,bool,&SgMemberFunctionRefExp::p_global_qualification_required> {
22299 using field_type = bool;
22300 static constexpr size_t position{6};
22301 static constexpr char const * const name{"global_qualification_required"};
22302 static constexpr char const * const typestr{"bool"};
22303 static constexpr bool traverse{false};
22304 static constexpr auto mbr_ptr{&SgMemberFunctionRefExp::p_global_qualification_required};
22305 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22306 using bind = Desc<SgMemberFunctionRefExp, bool SgMemberFunctionRefExp::*, &SgMemberFunctionRefExp::p_global_qualification_required>;
22307};
22317template <> struct node_from_variant_t<535> { using type = SgMemberFunctionRefExp; };
22318
22319// Class: MemberFunctionSymbol
22322 using base = SgFunctionSymbol;
22323 static constexpr char const * const name{"MemberFunctionSymbol"};
22324 static constexpr unsigned long variant{536};
22325 static constexpr bool concrete{true};
22327 using fields_t = mp::List<>;
22328};
22329template <> struct node_from_variant_t<536> { using type = SgMemberFunctionSymbol; };
22330
22331// Class: MemberFunctionType
22332template <> struct describe_field_t<SgMemberFunctionType,SgType*,&SgMemberFunctionType::p_class_type> {
22334 using field_type = SgType*;
22335 static constexpr size_t position{0};
22336 static constexpr char const * const name{"class_type"};
22337 static constexpr char const * const typestr{"SgType*"};
22338 static constexpr bool traverse{false};
22339 static constexpr auto mbr_ptr{&SgMemberFunctionType::p_class_type};
22340 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22341 using bind = Desc<SgMemberFunctionType, SgType* SgMemberFunctionType::*, &SgMemberFunctionType::p_class_type>;
22342};
22343template <> struct describe_field_t<SgMemberFunctionType,unsigned int,&SgMemberFunctionType::p_mfunc_specifier> {
22345 using field_type = unsigned int;
22346 static constexpr size_t position{1};
22347 static constexpr char const * const name{"mfunc_specifier"};
22348 static constexpr char const * const typestr{"unsigned int"};
22349 static constexpr bool traverse{false};
22350 static constexpr auto mbr_ptr{&SgMemberFunctionType::p_mfunc_specifier};
22351 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22352 using bind = Desc<SgMemberFunctionType, unsigned int SgMemberFunctionType::*, &SgMemberFunctionType::p_mfunc_specifier>;
22353};
22355 using node = SgMemberFunctionType;
22356 using base = SgFunctionType;
22357 static constexpr char const * const name{"MemberFunctionType"};
22358 static constexpr unsigned long variant{537};
22359 static constexpr bool concrete{true};
22362};
22363template <> struct node_from_variant_t<537> { using type = SgMemberFunctionType; };
22364
22365// Class: MembershipOp
22366template <> struct describe_node_t<SgMembershipOp> {
22367 using node = SgMembershipOp;
22368 using base = SgBinaryOp;
22369 static constexpr char const * const name{"MembershipOp"};
22370 static constexpr unsigned long variant{538};
22371 static constexpr bool concrete{true};
22372 using subclasses_t = mp::List<>;
22373 using fields_t = mp::List<>;
22374};
22375template <> struct node_from_variant_t<538> { using type = SgMembershipOp; };
22376
22377// Class: MicrosoftAttributeDeclaration
22378template <> struct describe_field_t<SgMicrosoftAttributeDeclaration,SgName,&SgMicrosoftAttributeDeclaration::p_attribute_string> {
22380 using field_type = SgName;
22381 static constexpr size_t position{0};
22382 static constexpr char const * const name{"attribute_string"};
22383 static constexpr char const * const typestr{"SgName"};
22384 static constexpr bool traverse{false};
22385 static constexpr auto mbr_ptr{&SgMicrosoftAttributeDeclaration::p_attribute_string};
22386 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22387 using bind = Desc<SgMicrosoftAttributeDeclaration, SgName SgMicrosoftAttributeDeclaration::*, &SgMicrosoftAttributeDeclaration::p_attribute_string>;
22388};
22392 static constexpr char const * const name{"MicrosoftAttributeDeclaration"};
22393 static constexpr unsigned long variant{539};
22394 static constexpr bool concrete{true};
22395 using subclasses_t = mp::List<>;
22397};
22398template <> struct node_from_variant_t<539> { using type = SgMicrosoftAttributeDeclaration; };
22399
22400// Class: MinusAssignOp
22402 using node = SgMinusAssignOp;
22403 using base = SgCompoundAssignOp;
22404 static constexpr char const * const name{"MinusAssignOp"};
22405 static constexpr unsigned long variant{540};
22406 static constexpr bool concrete{true};
22407 using subclasses_t = mp::List<>;
22408 using fields_t = mp::List<>;
22409};
22410template <> struct node_from_variant_t<540> { using type = SgMinusAssignOp; };
22411
22412// Class: MinusMinusOp
22413template <> struct describe_node_t<SgMinusMinusOp> {
22414 using node = SgMinusMinusOp;
22415 using base = SgUnaryOp;
22416 static constexpr char const * const name{"MinusMinusOp"};
22417 static constexpr unsigned long variant{541};
22418 static constexpr bool concrete{true};
22419 using subclasses_t = mp::List<>;
22420 using fields_t = mp::List<>;
22421};
22422template <> struct node_from_variant_t<541> { using type = SgMinusMinusOp; };
22423
22424// Class: MinusOp
22425template <> struct describe_node_t<SgMinusOp> {
22426 using node = SgMinusOp;
22427 using base = SgUnaryOp;
22428 static constexpr char const * const name{"MinusOp"};
22429 static constexpr unsigned long variant{542};
22430 static constexpr bool concrete{true};
22431 using subclasses_t = mp::List<>;
22432 using fields_t = mp::List<>;
22433};
22434template <> struct node_from_variant_t<542> { using type = SgMinusOp; };
22435
22436// Class: ModAssignOp
22437template <> struct describe_node_t<SgModAssignOp> {
22438 using node = SgModAssignOp;
22439 using base = SgCompoundAssignOp;
22440 static constexpr char const * const name{"ModAssignOp"};
22441 static constexpr unsigned long variant{543};
22442 static constexpr bool concrete{true};
22443 using subclasses_t = mp::List<>;
22444 using fields_t = mp::List<>;
22445};
22446template <> struct node_from_variant_t<543> { using type = SgModAssignOp; };
22447
22448// Class: ModOp
22449template <> struct describe_node_t<SgModOp> {
22450 using node = SgModOp;
22451 using base = SgBinaryOp;
22452 static constexpr char const * const name{"ModOp"};
22453 static constexpr unsigned long variant{544};
22454 static constexpr bool concrete{true};
22455 using subclasses_t = mp::List<>;
22456 using fields_t = mp::List<>;
22457};
22458template <> struct node_from_variant_t<544> { using type = SgModOp; };
22459
22460// Class: Modifier
22470template <> struct node_from_variant_t<545> { using type = SgModifier; };
22471
22472// Class: ModifierNodes
22473template <> struct describe_field_t<SgModifierNodes,SgModifierTypePtrVector,&SgModifierNodes::p_nodes> {
22474 using parent = SgModifierNodes;
22475 using field_type = SgModifierTypePtrVector;
22476 static constexpr size_t position{0};
22477 static constexpr char const * const name{"nodes"};
22478 static constexpr char const * const typestr{"SgModifierTypePtrVector"};
22479 static constexpr bool traverse{false};
22480 static constexpr auto mbr_ptr{&SgModifierNodes::p_nodes};
22481 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22482 using bind = Desc<SgModifierNodes, SgModifierTypePtrVector SgModifierNodes::*, &SgModifierNodes::p_nodes>;
22483};
22484template <> struct describe_field_t<SgModifierNodes,SgModifierNodes*,&SgModifierNodes::p_next> {
22485 using parent = SgModifierNodes;
22486 using field_type = SgModifierNodes*;
22487 static constexpr size_t position{1};
22488 static constexpr char const * const name{"next"};
22489 static constexpr char const * const typestr{"SgModifierNodes*"};
22490 static constexpr bool traverse{false};
22491 static constexpr auto mbr_ptr{&SgModifierNodes::p_next};
22492 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22493 using bind = Desc<SgModifierNodes, SgModifierNodes* SgModifierNodes::*, &SgModifierNodes::p_next>;
22494};
22496 using node = SgModifierNodes;
22497 using base = SgModifier;
22498 static constexpr char const * const name{"ModifierNodes"};
22499 static constexpr unsigned long variant{546};
22500 static constexpr bool concrete{true};
22501 using subclasses_t = mp::List<>;
22503};
22504template <> struct node_from_variant_t<546> { using type = SgModifierNodes; };
22505
22506// Class: ModifierType
22507template <> struct describe_field_t<SgModifierType,SgType*,&SgModifierType::p_base_type> {
22508 using parent = SgModifierType;
22509 using field_type = SgType*;
22510 static constexpr size_t position{0};
22511 static constexpr char const * const name{"base_type"};
22512 static constexpr char const * const typestr{"SgType*"};
22513 static constexpr bool traverse{true};
22514 static constexpr auto mbr_ptr{&SgModifierType::p_base_type};
22515 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22516 using bind = Desc<SgModifierType, SgType* SgModifierType::*, &SgModifierType::p_base_type>;
22517};
22518template <> struct describe_field_t<SgModifierType,SgTypeModifier,&SgModifierType::p_typeModifier> {
22519 using parent = SgModifierType;
22520 using field_type = SgTypeModifier;
22521 static constexpr size_t position{1};
22522 static constexpr char const * const name{"typeModifier"};
22523 static constexpr char const * const typestr{"SgTypeModifier"};
22524 static constexpr bool traverse{false};
22525 static constexpr auto mbr_ptr{&SgModifierType::p_typeModifier};
22526 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22527 using bind = Desc<SgModifierType, SgTypeModifier SgModifierType::*, &SgModifierType::p_typeModifier>;
22528};
22529template <> struct describe_field_t<SgModifierType,char*,&SgModifierType::p_frontend_type_reference> {
22530 using parent = SgModifierType;
22531 using field_type = char*;
22532 static constexpr size_t position{2};
22533 static constexpr char const * const name{"frontend_type_reference"};
22534 static constexpr char const * const typestr{"char*"};
22535 static constexpr bool traverse{false};
22536 static constexpr auto mbr_ptr{&SgModifierType::p_frontend_type_reference};
22537 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22538 using bind = Desc<SgModifierType, char* SgModifierType::*, &SgModifierType::p_frontend_type_reference>;
22539};
22540template <> struct describe_node_t<SgModifierType> {
22541 using node = SgModifierType;
22542 using base = SgType;
22543 static constexpr char const * const name{"ModifierType"};
22544 static constexpr unsigned long variant{547};
22545 static constexpr bool concrete{true};
22546 using subclasses_t = mp::List<>;
22548};
22549template <> struct node_from_variant_t<547> { using type = SgModifierType; };
22550
22551// Class: ModuleStatement
22552template <> struct describe_field_t<SgModuleStatement,SgLabelRefExp*,&SgModuleStatement::p_end_numeric_label> {
22553 using parent = SgModuleStatement;
22554 using field_type = SgLabelRefExp*;
22555 static constexpr size_t position{0};
22556 static constexpr char const * const name{"end_numeric_label"};
22557 static constexpr char const * const typestr{"SgLabelRefExp*"};
22558 static constexpr bool traverse{false};
22559 static constexpr auto mbr_ptr{&SgModuleStatement::p_end_numeric_label};
22560 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22561 using bind = Desc<SgModuleStatement, SgLabelRefExp* SgModuleStatement::*, &SgModuleStatement::p_end_numeric_label>;
22562};
22564 using node = SgModuleStatement;
22565 using base = SgClassDeclaration;
22566 static constexpr char const * const name{"ModuleStatement"};
22567 static constexpr unsigned long variant{548};
22568 static constexpr bool concrete{true};
22569 using subclasses_t = mp::List<>;
22571};
22572template <> struct node_from_variant_t<548> { using type = SgModuleStatement; };
22573
22574// Class: ModuleSymbol
22575template <> struct describe_field_t<SgModuleSymbol,SgModuleStatement*,&SgModuleSymbol::p_declaration> {
22576 using parent = SgModuleSymbol;
22578 static constexpr size_t position{0};
22579 static constexpr char const * const name{"declaration"};
22580 static constexpr char const * const typestr{"SgModuleStatement*"};
22581 static constexpr bool traverse{true};
22582 static constexpr auto mbr_ptr{&SgModuleSymbol::p_declaration};
22583 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22584 using bind = Desc<SgModuleSymbol, SgModuleStatement* SgModuleSymbol::*, &SgModuleSymbol::p_declaration>;
22585};
22586template <> struct describe_node_t<SgModuleSymbol> {
22587 using node = SgModuleSymbol;
22588 using base = SgSymbol;
22589 static constexpr char const * const name{"ModuleSymbol"};
22590 static constexpr unsigned long variant{549};
22591 static constexpr bool concrete{true};
22592 using subclasses_t = mp::List<>;
22594};
22595template <> struct node_from_variant_t<549> { using type = SgModuleSymbol; };
22596
22597// Class: MultAssignOp
22598template <> struct describe_node_t<SgMultAssignOp> {
22599 using node = SgMultAssignOp;
22600 using base = SgCompoundAssignOp;
22601 static constexpr char const * const name{"MultAssignOp"};
22602 static constexpr unsigned long variant{550};
22603 static constexpr bool concrete{true};
22604 using subclasses_t = mp::List<>;
22605 using fields_t = mp::List<>;
22606};
22607template <> struct node_from_variant_t<550> { using type = SgMultAssignOp; };
22608
22609// Class: MultiplyOp
22610template <> struct describe_node_t<SgMultiplyOp> {
22611 using node = SgMultiplyOp;
22612 using base = SgBinaryOp;
22613 static constexpr char const * const name{"MultiplyOp"};
22614 static constexpr unsigned long variant{551};
22615 static constexpr bool concrete{true};
22616 using subclasses_t = mp::List<>;
22617 using fields_t = mp::List<>;
22618};
22619template <> struct node_from_variant_t<551> { using type = SgMultiplyOp; };
22620
22621// Class: Name
22622template <> struct describe_field_t<SgName,std::string,&SgName::p_char> {
22623 using parent = SgName;
22624 using field_type = std::string;
22625 static constexpr size_t position{0};
22626 static constexpr char const * const name{"char"};
22627 static constexpr char const * const typestr{"std::string"};
22628 static constexpr bool traverse{false};
22629 static constexpr auto mbr_ptr{&SgName::p_char};
22630 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22631 using bind = Desc<SgName, std::string SgName::*, &SgName::p_char>;
22632};
22633template <> struct describe_node_t<SgName> {
22634 using node = SgName;
22635 using base = SgSupport;
22636 static constexpr char const * const name{"Name"};
22637 static constexpr unsigned long variant{552};
22638 static constexpr bool concrete{true};
22639 using subclasses_t = mp::List<>;
22641};
22642template <> struct node_from_variant_t<552> { using type = SgName; };
22643
22644// Class: NameGroup
22645template <> struct describe_field_t<SgNameGroup,std::string,&SgNameGroup::p_group_name> {
22646 using parent = SgNameGroup;
22647 using field_type = std::string;
22648 static constexpr size_t position{0};
22649 static constexpr char const * const name{"group_name"};
22650 static constexpr char const * const typestr{"std::string"};
22651 static constexpr bool traverse{false};
22652 static constexpr auto mbr_ptr{&SgNameGroup::p_group_name};
22653 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22654 using bind = Desc<SgNameGroup, std::string SgNameGroup::*, &SgNameGroup::p_group_name>;
22655};
22656template <> struct describe_field_t<SgNameGroup,SgStringList,&SgNameGroup::p_name_list> {
22657 using parent = SgNameGroup;
22658 using field_type = SgStringList;
22659 static constexpr size_t position{1};
22660 static constexpr char const * const name{"name_list"};
22661 static constexpr char const * const typestr{"SgStringList"};
22662 static constexpr bool traverse{false};
22663 static constexpr auto mbr_ptr{&SgNameGroup::p_name_list};
22664 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22665 using bind = Desc<SgNameGroup, SgStringList SgNameGroup::*, &SgNameGroup::p_name_list>;
22666};
22667template <> struct describe_node_t<SgNameGroup> {
22668 using node = SgNameGroup;
22669 using base = SgSupport;
22670 static constexpr char const * const name{"NameGroup"};
22671 static constexpr unsigned long variant{553};
22672 static constexpr bool concrete{true};
22673 using subclasses_t = mp::List<>;
22675};
22676template <> struct node_from_variant_t<553> { using type = SgNameGroup; };
22677
22678// Class: NamedType
22679template <> struct describe_field_t<SgNamedType,SgDeclarationStatement*,&SgNamedType::p_declaration> {
22680 using parent = SgNamedType;
22682 static constexpr size_t position{0};
22683 static constexpr char const * const name{"declaration"};
22684 static constexpr char const * const typestr{"SgDeclarationStatement*"};
22685 static constexpr bool traverse{true};
22686 static constexpr auto mbr_ptr{&SgNamedType::p_declaration};
22687 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22688 using bind = Desc<SgNamedType, SgDeclarationStatement* SgNamedType::*, &SgNamedType::p_declaration>;
22689};
22690template <> struct describe_field_t<SgNamedType,bool,&SgNamedType::p_autonomous_declaration> {
22691 using parent = SgNamedType;
22692 using field_type = bool;
22693 static constexpr size_t position{1};
22694 static constexpr char const * const name{"autonomous_declaration"};
22695 static constexpr char const * const typestr{"bool"};
22696 static constexpr bool traverse{false};
22697 static constexpr auto mbr_ptr{&SgNamedType::p_autonomous_declaration};
22698 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22699 using bind = Desc<SgNamedType, bool SgNamedType::*, &SgNamedType::p_autonomous_declaration>;
22700};
22701template <> struct describe_field_t<SgNamedType,bool,&SgNamedType::p_is_from_template_parameter> {
22702 using parent = SgNamedType;
22703 using field_type = bool;
22704 static constexpr size_t position{2};
22705 static constexpr char const * const name{"is_from_template_parameter"};
22706 static constexpr char const * const typestr{"bool"};
22707 static constexpr bool traverse{false};
22708 static constexpr auto mbr_ptr{&SgNamedType::p_is_from_template_parameter};
22709 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22710 using bind = Desc<SgNamedType, bool SgNamedType::*, &SgNamedType::p_is_from_template_parameter>;
22711};
22721template <> struct node_from_variant_t<554> { using type = SgNamedType; };
22722
22723// Class: NamelistStatement
22724template <> struct describe_field_t<SgNamelistStatement,SgNameGroupPtrList,&SgNamelistStatement::p_group_list> {
22726 using field_type = SgNameGroupPtrList;
22727 static constexpr size_t position{0};
22728 static constexpr char const * const name{"group_list"};
22729 static constexpr char const * const typestr{"SgNameGroupPtrList"};
22730 static constexpr bool traverse{false};
22731 static constexpr auto mbr_ptr{&SgNamelistStatement::p_group_list};
22732 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22733 using bind = Desc<SgNamelistStatement, SgNameGroupPtrList SgNamelistStatement::*, &SgNamelistStatement::p_group_list>;
22734};
22736 using node = SgNamelistStatement;
22738 static constexpr char const * const name{"NamelistStatement"};
22739 static constexpr unsigned long variant{555};
22740 static constexpr bool concrete{true};
22741 using subclasses_t = mp::List<>;
22743};
22744template <> struct node_from_variant_t<555> { using type = SgNamelistStatement; };
22745
22746// Class: NamespaceAliasDeclarationStatement
22749 using field_type = SgName;
22750 static constexpr size_t position{0};
22751 static constexpr char const * const name{"name"};
22752 static constexpr char const * const typestr{"SgName"};
22753 static constexpr bool traverse{false};
22754 static constexpr auto mbr_ptr{&SgNamespaceAliasDeclarationStatement::p_name};
22755 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22756 using bind = Desc<SgNamespaceAliasDeclarationStatement, SgName SgNamespaceAliasDeclarationStatement::*, &SgNamespaceAliasDeclarationStatement::p_name>;
22757};
22761 static constexpr size_t position{1};
22762 static constexpr char const * const name{"namespaceDeclaration"};
22763 static constexpr char const * const typestr{"SgNamespaceDeclarationStatement*"};
22764 static constexpr bool traverse{false};
22766 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22767 using bind = Desc<SgNamespaceAliasDeclarationStatement, SgNamespaceDeclarationStatement* SgNamespaceAliasDeclarationStatement::*, &SgNamespaceAliasDeclarationStatement::p_namespaceDeclaration>;
22768};
22769template <> struct describe_field_t<SgNamespaceAliasDeclarationStatement,int,&SgNamespaceAliasDeclarationStatement::p_name_qualification_length> {
22771 using field_type = int;
22772 static constexpr size_t position{2};
22773 static constexpr char const * const name{"name_qualification_length"};
22774 static constexpr char const * const typestr{"int"};
22775 static constexpr bool traverse{false};
22776 static constexpr auto mbr_ptr{&SgNamespaceAliasDeclarationStatement::p_name_qualification_length};
22777 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22778 using bind = Desc<SgNamespaceAliasDeclarationStatement, int SgNamespaceAliasDeclarationStatement::*, &SgNamespaceAliasDeclarationStatement::p_name_qualification_length>;
22779};
22780template <> struct describe_field_t<SgNamespaceAliasDeclarationStatement,bool,&SgNamespaceAliasDeclarationStatement::p_type_elaboration_required> {
22782 using field_type = bool;
22783 static constexpr size_t position{3};
22784 static constexpr char const * const name{"type_elaboration_required"};
22785 static constexpr char const * const typestr{"bool"};
22786 static constexpr bool traverse{false};
22787 static constexpr auto mbr_ptr{&SgNamespaceAliasDeclarationStatement::p_type_elaboration_required};
22788 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22789 using bind = Desc<SgNamespaceAliasDeclarationStatement, bool SgNamespaceAliasDeclarationStatement::*, &SgNamespaceAliasDeclarationStatement::p_type_elaboration_required>;
22790};
22791template <> struct describe_field_t<SgNamespaceAliasDeclarationStatement,bool,&SgNamespaceAliasDeclarationStatement::p_global_qualification_required> {
22793 using field_type = bool;
22794 static constexpr size_t position{4};
22795 static constexpr char const * const name{"global_qualification_required"};
22796 static constexpr char const * const typestr{"bool"};
22797 static constexpr bool traverse{false};
22798 static constexpr auto mbr_ptr{&SgNamespaceAliasDeclarationStatement::p_global_qualification_required};
22799 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22800 using bind = Desc<SgNamespaceAliasDeclarationStatement, bool SgNamespaceAliasDeclarationStatement::*, &SgNamespaceAliasDeclarationStatement::p_global_qualification_required>;
22801};
22802template <> struct describe_field_t<SgNamespaceAliasDeclarationStatement,bool,&SgNamespaceAliasDeclarationStatement::p_is_alias_for_another_namespace_alias> {
22804 using field_type = bool;
22805 static constexpr size_t position{5};
22806 static constexpr char const * const name{"is_alias_for_another_namespace_alias"};
22807 static constexpr char const * const typestr{"bool"};
22808 static constexpr bool traverse{false};
22809 static constexpr auto mbr_ptr{&SgNamespaceAliasDeclarationStatement::p_is_alias_for_another_namespace_alias};
22810 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22811 using bind = Desc<SgNamespaceAliasDeclarationStatement, bool SgNamespaceAliasDeclarationStatement::*, &SgNamespaceAliasDeclarationStatement::p_is_alias_for_another_namespace_alias>;
22812};
22813template <> struct describe_field_t<SgNamespaceAliasDeclarationStatement,SgNamespaceAliasDeclarationStatement*,&SgNamespaceAliasDeclarationStatement::p_namespaceAliasDeclaration> {
22816 static constexpr size_t position{6};
22817 static constexpr char const * const name{"namespaceAliasDeclaration"};
22818 static constexpr char const * const typestr{"SgNamespaceAliasDeclarationStatement*"};
22819 static constexpr bool traverse{false};
22820 static constexpr auto mbr_ptr{&SgNamespaceAliasDeclarationStatement::p_namespaceAliasDeclaration};
22821 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22822 using bind = Desc<SgNamespaceAliasDeclarationStatement, SgNamespaceAliasDeclarationStatement* SgNamespaceAliasDeclarationStatement::*, &SgNamespaceAliasDeclarationStatement::p_namespaceAliasDeclaration>;
22823};
22833template <> struct node_from_variant_t<556> { using type = SgNamespaceAliasDeclarationStatement; };
22834
22835// Class: NamespaceDeclarationStatement
22838 using field_type = SgName;
22839 static constexpr size_t position{0};
22840 static constexpr char const * const name{"name"};
22841 static constexpr char const * const typestr{"SgName"};
22842 static constexpr bool traverse{false};
22843 static constexpr auto mbr_ptr{&SgNamespaceDeclarationStatement::p_name};
22844 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22845 using bind = Desc<SgNamespaceDeclarationStatement, SgName SgNamespaceDeclarationStatement::*, &SgNamespaceDeclarationStatement::p_name>;
22846};
22850 static constexpr size_t position{1};
22851 static constexpr char const * const name{"definition"};
22852 static constexpr char const * const typestr{"SgNamespaceDefinitionStatement*"};
22853 static constexpr bool traverse{true};
22854 static constexpr auto mbr_ptr{&SgNamespaceDeclarationStatement::p_definition};
22855 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22856 using bind = Desc<SgNamespaceDeclarationStatement, SgNamespaceDefinitionStatement* SgNamespaceDeclarationStatement::*, &SgNamespaceDeclarationStatement::p_definition>;
22857};
22860 using field_type = bool;
22861 static constexpr size_t position{2};
22862 static constexpr char const * const name{"isUnnamedNamespace"};
22863 static constexpr char const * const typestr{"bool"};
22864 static constexpr bool traverse{false};
22865 static constexpr auto mbr_ptr{&SgNamespaceDeclarationStatement::p_isUnnamedNamespace};
22866 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22867 using bind = Desc<SgNamespaceDeclarationStatement, bool SgNamespaceDeclarationStatement::*, &SgNamespaceDeclarationStatement::p_isUnnamedNamespace>;
22868};
22869template <> struct describe_field_t<SgNamespaceDeclarationStatement,bool,&SgNamespaceDeclarationStatement::p_isInlinedNamespace> {
22871 using field_type = bool;
22872 static constexpr size_t position{3};
22873 static constexpr char const * const name{"isInlinedNamespace"};
22874 static constexpr char const * const typestr{"bool"};
22875 static constexpr bool traverse{false};
22876 static constexpr auto mbr_ptr{&SgNamespaceDeclarationStatement::p_isInlinedNamespace};
22877 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22878 using bind = Desc<SgNamespaceDeclarationStatement, bool SgNamespaceDeclarationStatement::*, &SgNamespaceDeclarationStatement::p_isInlinedNamespace>;
22879};
22889template <> struct node_from_variant_t<557> { using type = SgNamespaceDeclarationStatement; };
22890
22891// Class: NamespaceDefinitionStatement
22894 using field_type = SgDeclarationStatementPtrList;
22895 static constexpr size_t position{0};
22896 static constexpr char const * const name{"declarations"};
22897 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
22898 static constexpr bool traverse{true};
22899 static constexpr auto mbr_ptr{&SgNamespaceDefinitionStatement::p_declarations};
22900 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22901 using bind = Desc<SgNamespaceDefinitionStatement, SgDeclarationStatementPtrList SgNamespaceDefinitionStatement::*, &SgNamespaceDefinitionStatement::p_declarations>;
22902};
22906 static constexpr size_t position{1};
22907 static constexpr char const * const name{"namespaceDeclaration"};
22908 static constexpr char const * const typestr{"SgNamespaceDeclarationStatement*"};
22909 static constexpr bool traverse{false};
22910 static constexpr auto mbr_ptr{&SgNamespaceDefinitionStatement::p_namespaceDeclaration};
22911 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22912 using bind = Desc<SgNamespaceDefinitionStatement, SgNamespaceDeclarationStatement* SgNamespaceDefinitionStatement::*, &SgNamespaceDefinitionStatement::p_namespaceDeclaration>;
22913};
22914template <> struct describe_field_t<SgNamespaceDefinitionStatement,SgNamespaceDefinitionStatement*,&SgNamespaceDefinitionStatement::p_previousNamespaceDefinition> {
22917 static constexpr size_t position{2};
22918 static constexpr char const * const name{"previousNamespaceDefinition"};
22919 static constexpr char const * const typestr{"SgNamespaceDefinitionStatement*"};
22920 static constexpr bool traverse{false};
22921 static constexpr auto mbr_ptr{&SgNamespaceDefinitionStatement::p_previousNamespaceDefinition};
22922 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22923 using bind = Desc<SgNamespaceDefinitionStatement, SgNamespaceDefinitionStatement* SgNamespaceDefinitionStatement::*, &SgNamespaceDefinitionStatement::p_previousNamespaceDefinition>;
22924};
22925template <> struct describe_field_t<SgNamespaceDefinitionStatement,SgNamespaceDefinitionStatement*,&SgNamespaceDefinitionStatement::p_nextNamespaceDefinition> {
22928 static constexpr size_t position{3};
22929 static constexpr char const * const name{"nextNamespaceDefinition"};
22930 static constexpr char const * const typestr{"SgNamespaceDefinitionStatement*"};
22931 static constexpr bool traverse{false};
22932 static constexpr auto mbr_ptr{&SgNamespaceDefinitionStatement::p_nextNamespaceDefinition};
22933 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22934 using bind = Desc<SgNamespaceDefinitionStatement, SgNamespaceDefinitionStatement* SgNamespaceDefinitionStatement::*, &SgNamespaceDefinitionStatement::p_nextNamespaceDefinition>;
22935};
22936template <> struct describe_field_t<SgNamespaceDefinitionStatement,SgNamespaceDefinitionStatement*,&SgNamespaceDefinitionStatement::p_global_definition> {
22939 static constexpr size_t position{4};
22940 static constexpr char const * const name{"global_definition"};
22941 static constexpr char const * const typestr{"SgNamespaceDefinitionStatement*"};
22942 static constexpr bool traverse{false};
22943 static constexpr auto mbr_ptr{&SgNamespaceDefinitionStatement::p_global_definition};
22944 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22945 using bind = Desc<SgNamespaceDefinitionStatement, SgNamespaceDefinitionStatement* SgNamespaceDefinitionStatement::*, &SgNamespaceDefinitionStatement::p_global_definition>;
22946};
22947template <> struct describe_field_t<SgNamespaceDefinitionStatement,bool,&SgNamespaceDefinitionStatement::p_isUnionOfReentrantNamespaceDefinitions> {
22949 using field_type = bool;
22950 static constexpr size_t position{5};
22951 static constexpr char const * const name{"isUnionOfReentrantNamespaceDefinitions"};
22952 static constexpr char const * const typestr{"bool"};
22953 static constexpr bool traverse{false};
22954 static constexpr auto mbr_ptr{&SgNamespaceDefinitionStatement::p_isUnionOfReentrantNamespaceDefinitions};
22955 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22956 using bind = Desc<SgNamespaceDefinitionStatement, bool SgNamespaceDefinitionStatement::*, &SgNamespaceDefinitionStatement::p_isUnionOfReentrantNamespaceDefinitions>;
22957};
22967template <> struct node_from_variant_t<558> { using type = SgNamespaceDefinitionStatement; };
22968
22969// Class: NamespaceSymbol
22970template <> struct describe_field_t<SgNamespaceSymbol,SgName,&SgNamespaceSymbol::p_name> {
22971 using parent = SgNamespaceSymbol;
22972 using field_type = SgName;
22973 static constexpr size_t position{0};
22974 static constexpr char const * const name{"name"};
22975 static constexpr char const * const typestr{"SgName"};
22976 static constexpr bool traverse{false};
22977 static constexpr auto mbr_ptr{&SgNamespaceSymbol::p_name};
22978 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22979 using bind = Desc<SgNamespaceSymbol, SgName SgNamespaceSymbol::*, &SgNamespaceSymbol::p_name>;
22980};
22981template <> struct describe_field_t<SgNamespaceSymbol,SgNamespaceDeclarationStatement*,&SgNamespaceSymbol::p_declaration> {
22982 using parent = SgNamespaceSymbol;
22984 static constexpr size_t position{1};
22985 static constexpr char const * const name{"declaration"};
22986 static constexpr char const * const typestr{"SgNamespaceDeclarationStatement*"};
22987 static constexpr bool traverse{true};
22988 static constexpr auto mbr_ptr{&SgNamespaceSymbol::p_declaration};
22989 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
22990 using bind = Desc<SgNamespaceSymbol, SgNamespaceDeclarationStatement* SgNamespaceSymbol::*, &SgNamespaceSymbol::p_declaration>;
22991};
22992template <> struct describe_field_t<SgNamespaceSymbol,SgNamespaceAliasDeclarationStatement*,&SgNamespaceSymbol::p_aliasDeclaration> {
22993 using parent = SgNamespaceSymbol;
22995 static constexpr size_t position{2};
22996 static constexpr char const * const name{"aliasDeclaration"};
22997 static constexpr char const * const typestr{"SgNamespaceAliasDeclarationStatement*"};
22998 static constexpr bool traverse{true};
22999 static constexpr auto mbr_ptr{&SgNamespaceSymbol::p_aliasDeclaration};
23000 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23001 using bind = Desc<SgNamespaceSymbol, SgNamespaceAliasDeclarationStatement* SgNamespaceSymbol::*, &SgNamespaceSymbol::p_aliasDeclaration>;
23002};
23003template <> struct describe_field_t<SgNamespaceSymbol,bool,&SgNamespaceSymbol::p_isAlias> {
23004 using parent = SgNamespaceSymbol;
23005 using field_type = bool;
23006 static constexpr size_t position{3};
23007 static constexpr char const * const name{"isAlias"};
23008 static constexpr char const * const typestr{"bool"};
23009 static constexpr bool traverse{false};
23010 static constexpr auto mbr_ptr{&SgNamespaceSymbol::p_isAlias};
23011 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23012 using bind = Desc<SgNamespaceSymbol, bool SgNamespaceSymbol::*, &SgNamespaceSymbol::p_isAlias>;
23013};
23023template <> struct node_from_variant_t<559> { using type = SgNamespaceSymbol; };
23024
23025// Class: NaryOp
23026template <> struct describe_field_t<SgNaryOp,SgExpressionPtrList,&SgNaryOp::p_operands> {
23027 using parent = SgNaryOp;
23028 using field_type = SgExpressionPtrList;
23029 static constexpr size_t position{0};
23030 static constexpr char const * const name{"operands"};
23031 static constexpr char const * const typestr{"SgExpressionPtrList"};
23032 static constexpr bool traverse{true};
23033 static constexpr auto mbr_ptr{&SgNaryOp::p_operands};
23034 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23035 using bind = Desc<SgNaryOp, SgExpressionPtrList SgNaryOp::*, &SgNaryOp::p_operands>;
23036};
23037template <> struct describe_field_t<SgNaryOp,VariantTList,&SgNaryOp::p_operators> {
23038 using parent = SgNaryOp;
23039 using field_type = VariantTList;
23040 static constexpr size_t position{1};
23041 static constexpr char const * const name{"operators"};
23042 static constexpr char const * const typestr{"VariantTList"};
23043 static constexpr bool traverse{false};
23044 static constexpr auto mbr_ptr{&SgNaryOp::p_operators};
23045 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23046 using bind = Desc<SgNaryOp, VariantTList SgNaryOp::*, &SgNaryOp::p_operators>;
23047};
23048template <> struct describe_node_t<SgNaryOp> {
23049 using node = SgNaryOp;
23050 using base = SgExpression;
23051 static constexpr char const * const name{"NaryOp"};
23052 static constexpr unsigned long variant{560};
23053 static constexpr bool concrete{false};
23056};
23057template <> struct node_from_variant_t<560> { using type = SgNaryOp; };
23058
23059// Class: NaryBooleanOp
23061 using node = SgNaryBooleanOp;
23062 using base = SgNaryOp;
23063 static constexpr char const * const name{"NaryBooleanOp"};
23064 static constexpr unsigned long variant{561};
23065 static constexpr bool concrete{true};
23066 using subclasses_t = mp::List<>;
23067 using fields_t = mp::List<>;
23068};
23069template <> struct node_from_variant_t<561> { using type = SgNaryBooleanOp; };
23070
23071// Class: NaryComparisonOp
23073 using node = SgNaryComparisonOp;
23074 using base = SgNaryOp;
23075 static constexpr char const * const name{"NaryComparisonOp"};
23076 static constexpr unsigned long variant{562};
23077 static constexpr bool concrete{true};
23078 using subclasses_t = mp::List<>;
23079 using fields_t = mp::List<>;
23080};
23081template <> struct node_from_variant_t<562> { using type = SgNaryComparisonOp; };
23082
23083// Class: NewExp
23084template <> struct describe_field_t<SgNewExp,SgType*,&SgNewExp::p_specified_type> {
23085 using parent = SgNewExp;
23086 using field_type = SgType*;
23087 static constexpr size_t position{0};
23088 static constexpr char const * const name{"specified_type"};
23089 static constexpr char const * const typestr{"SgType*"};
23090 static constexpr bool traverse{false};
23091 static constexpr auto mbr_ptr{&SgNewExp::p_specified_type};
23092 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23093 using bind = Desc<SgNewExp, SgType* SgNewExp::*, &SgNewExp::p_specified_type>;
23094};
23096 using parent = SgNewExp;
23097 using field_type = SgExprListExp*;
23098 static constexpr size_t position{1};
23099 static constexpr char const * const name{"placement_args"};
23100 static constexpr char const * const typestr{"SgExprListExp*"};
23101 static constexpr bool traverse{true};
23102 static constexpr auto mbr_ptr{&SgNewExp::p_placement_args};
23103 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23104 using bind = Desc<SgNewExp, SgExprListExp* SgNewExp::*, &SgNewExp::p_placement_args>;
23105};
23107 using parent = SgNewExp;
23109 static constexpr size_t position{2};
23110 static constexpr char const * const name{"constructor_args"};
23111 static constexpr char const * const typestr{"SgConstructorInitializer*"};
23112 static constexpr bool traverse{true};
23113 static constexpr auto mbr_ptr{&SgNewExp::p_constructor_args};
23114 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23115 using bind = Desc<SgNewExp, SgConstructorInitializer* SgNewExp::*, &SgNewExp::p_constructor_args>;
23116};
23118 using parent = SgNewExp;
23119 using field_type = SgExpression*;
23120 static constexpr size_t position{3};
23121 static constexpr char const * const name{"builtin_args"};
23122 static constexpr char const * const typestr{"SgExpression*"};
23123 static constexpr bool traverse{true};
23124 static constexpr auto mbr_ptr{&SgNewExp::p_builtin_args};
23125 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23126 using bind = Desc<SgNewExp, SgExpression* SgNewExp::*, &SgNewExp::p_builtin_args>;
23127};
23129 using parent = SgNewExp;
23130 using field_type = short;
23131 static constexpr size_t position{4};
23132 static constexpr char const * const name{"need_global_specifier"};
23133 static constexpr char const * const typestr{"short"};
23134 static constexpr bool traverse{false};
23135 static constexpr auto mbr_ptr{&SgNewExp::p_need_global_specifier};
23136 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23137 using bind = Desc<SgNewExp, short SgNewExp::*, &SgNewExp::p_need_global_specifier>;
23138};
23139template <> struct describe_field_t<SgNewExp,SgFunctionDeclaration*,&SgNewExp::p_newOperatorDeclaration> {
23140 using parent = SgNewExp;
23142 static constexpr size_t position{5};
23143 static constexpr char const * const name{"newOperatorDeclaration"};
23144 static constexpr char const * const typestr{"SgFunctionDeclaration*"};
23145 static constexpr bool traverse{false};
23146 static constexpr auto mbr_ptr{&SgNewExp::p_newOperatorDeclaration};
23147 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23148 using bind = Desc<SgNewExp, SgFunctionDeclaration* SgNewExp::*, &SgNewExp::p_newOperatorDeclaration>;
23149};
23150template <> struct describe_field_t<SgNewExp,int,&SgNewExp::p_name_qualification_length> {
23151 using parent = SgNewExp;
23152 using field_type = int;
23153 static constexpr size_t position{6};
23154 static constexpr char const * const name{"name_qualification_length"};
23155 static constexpr char const * const typestr{"int"};
23156 static constexpr bool traverse{false};
23157 static constexpr auto mbr_ptr{&SgNewExp::p_name_qualification_length};
23158 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23159 using bind = Desc<SgNewExp, int SgNewExp::*, &SgNewExp::p_name_qualification_length>;
23160};
23161template <> struct describe_field_t<SgNewExp,bool,&SgNewExp::p_type_elaboration_required> {
23162 using parent = SgNewExp;
23163 using field_type = bool;
23164 static constexpr size_t position{7};
23165 static constexpr char const * const name{"type_elaboration_required"};
23166 static constexpr char const * const typestr{"bool"};
23167 static constexpr bool traverse{false};
23168 static constexpr auto mbr_ptr{&SgNewExp::p_type_elaboration_required};
23169 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23170 using bind = Desc<SgNewExp, bool SgNewExp::*, &SgNewExp::p_type_elaboration_required>;
23171};
23172template <> struct describe_field_t<SgNewExp,bool,&SgNewExp::p_global_qualification_required> {
23173 using parent = SgNewExp;
23174 using field_type = bool;
23175 static constexpr size_t position{8};
23176 static constexpr char const * const name{"global_qualification_required"};
23177 static constexpr char const * const typestr{"bool"};
23178 static constexpr bool traverse{false};
23179 static constexpr auto mbr_ptr{&SgNewExp::p_global_qualification_required};
23180 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23181 using bind = Desc<SgNewExp, bool SgNewExp::*, &SgNewExp::p_global_qualification_required>;
23182};
23183template <> struct describe_field_t<SgNewExp,int,&SgNewExp::p_name_qualification_for_pointer_to_member_class_length> {
23184 using parent = SgNewExp;
23185 using field_type = int;
23186 static constexpr size_t position{9};
23187 static constexpr char const * const name{"name_qualification_for_pointer_to_member_class_length"};
23188 static constexpr char const * const typestr{"int"};
23189 static constexpr bool traverse{false};
23190 static constexpr auto mbr_ptr{&SgNewExp::p_name_qualification_for_pointer_to_member_class_length};
23191 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23192 using bind = Desc<SgNewExp, int SgNewExp::*, &SgNewExp::p_name_qualification_for_pointer_to_member_class_length>;
23193};
23194template <> struct describe_field_t<SgNewExp,bool,&SgNewExp::p_type_elaboration_for_pointer_to_member_class_required> {
23195 using parent = SgNewExp;
23196 using field_type = bool;
23197 static constexpr size_t position{10};
23198 static constexpr char const * const name{"type_elaboration_for_pointer_to_member_class_required"};
23199 static constexpr char const * const typestr{"bool"};
23200 static constexpr bool traverse{false};
23201 static constexpr auto mbr_ptr{&SgNewExp::p_type_elaboration_for_pointer_to_member_class_required};
23202 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23203 using bind = Desc<SgNewExp, bool SgNewExp::*, &SgNewExp::p_type_elaboration_for_pointer_to_member_class_required>;
23204};
23205template <> struct describe_field_t<SgNewExp,bool,&SgNewExp::p_global_qualification_for_pointer_to_member_class_required> {
23206 using parent = SgNewExp;
23207 using field_type = bool;
23208 static constexpr size_t position{11};
23209 static constexpr char const * const name{"global_qualification_for_pointer_to_member_class_required"};
23210 static constexpr char const * const typestr{"bool"};
23211 static constexpr bool traverse{false};
23212 static constexpr auto mbr_ptr{&SgNewExp::p_global_qualification_for_pointer_to_member_class_required};
23213 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23214 using bind = Desc<SgNewExp, bool SgNewExp::*, &SgNewExp::p_global_qualification_for_pointer_to_member_class_required>;
23215};
23225template <> struct node_from_variant_t<563> { using type = SgNewExp; };
23226
23227// Class: Node
23229 using parent = SgNode;
23230 using field_type = SgNode*;
23231 static constexpr size_t position{0};
23232 static constexpr char const * const name{"parent"};
23233 static constexpr char const * const typestr{"SgNode*"};
23234 static constexpr bool traverse{false};
23235 static constexpr auto mbr_ptr{&SgNode::p_parent};
23236 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23237 using bind = Desc<SgNode, SgNode* SgNode::*, &SgNode::p_parent>;
23238};
23240 using parent = SgNode;
23241 using field_type = bool;
23242 static constexpr size_t position{1};
23243 static constexpr char const * const name{"isModified"};
23244 static constexpr char const * const typestr{"bool"};
23245 static constexpr bool traverse{false};
23246 static constexpr auto mbr_ptr{&SgNode::p_isModified};
23247 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23248 using bind = Desc<SgNode, bool SgNode::*, &SgNode::p_isModified>;
23249};
23250template <> struct describe_field_t<SgNode,bool,&SgNode::p_containsTransformation> {
23251 using parent = SgNode;
23252 using field_type = bool;
23253 static constexpr size_t position{2};
23254 static constexpr char const * const name{"containsTransformation"};
23255 static constexpr char const * const typestr{"bool"};
23256 static constexpr bool traverse{false};
23257 static constexpr auto mbr_ptr{&SgNode::p_containsTransformation};
23258 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23259 using bind = Desc<SgNode, bool SgNode::*, &SgNode::p_containsTransformation>;
23260};
23262 using parent = SgNode;
23263 using field_type = SgNode*;
23264 static constexpr size_t position{3};
23265 static constexpr char const * const name{"freepointer"};
23266 static constexpr char const * const typestr{"SgNode*"};
23267 static constexpr bool traverse{false};
23268 static constexpr auto mbr_ptr{&SgNode::p_freepointer};
23269 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23270 using bind = Desc<SgNode, SgNode* SgNode::*, &SgNode::p_freepointer>;
23271};
23272template <> struct describe_node_t<SgNode> {
23273 using node = SgNode;
23274 using base = void;
23275 static constexpr char const * const name{"Node"};
23276 static constexpr unsigned long variant{564};
23277 static constexpr bool concrete{false};
23280};
23281template <> struct node_from_variant_t<564> { using type = SgNode; };
23282
23283// Class: NoexceptOp
23284template <> struct describe_field_t<SgNoexceptOp,SgExpression*,&SgNoexceptOp::p_operand_expr> {
23285 using parent = SgNoexceptOp;
23286 using field_type = SgExpression*;
23287 static constexpr size_t position{0};
23288 static constexpr char const * const name{"operand_expr"};
23289 static constexpr char const * const typestr{"SgExpression*"};
23290 static constexpr bool traverse{true};
23291 static constexpr auto mbr_ptr{&SgNoexceptOp::p_operand_expr};
23292 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23293 using bind = Desc<SgNoexceptOp, SgExpression* SgNoexceptOp::*, &SgNoexceptOp::p_operand_expr>;
23294};
23295template <> struct describe_node_t<SgNoexceptOp> {
23296 using node = SgNoexceptOp;
23297 using base = SgExpression;
23298 static constexpr char const * const name{"NoexceptOp"};
23299 static constexpr unsigned long variant{565};
23300 static constexpr bool concrete{true};
23301 using subclasses_t = mp::List<>;
23303};
23304template <> struct node_from_variant_t<565> { using type = SgNoexceptOp; };
23305
23306// Class: NotEqualOp
23307template <> struct describe_node_t<SgNotEqualOp> {
23308 using node = SgNotEqualOp;
23309 using base = SgBinaryOp;
23310 static constexpr char const * const name{"NotEqualOp"};
23311 static constexpr unsigned long variant{566};
23312 static constexpr bool concrete{true};
23313 using subclasses_t = mp::List<>;
23314 using fields_t = mp::List<>;
23315};
23316template <> struct node_from_variant_t<566> { using type = SgNotEqualOp; };
23317
23318// Class: NotOp
23319template <> struct describe_node_t<SgNotOp> {
23320 using node = SgNotOp;
23321 using base = SgUnaryOp;
23322 static constexpr char const * const name{"NotOp"};
23323 static constexpr unsigned long variant{567};
23324 static constexpr bool concrete{true};
23325 using subclasses_t = mp::List<>;
23326 using fields_t = mp::List<>;
23327};
23328template <> struct node_from_variant_t<567> { using type = SgNotOp; };
23329
23330// Class: NonMembershipOp
23332 using node = SgNonMembershipOp;
23333 using base = SgBinaryOp;
23334 static constexpr char const * const name{"NonMembershipOp"};
23335 static constexpr unsigned long variant{568};
23336 static constexpr bool concrete{true};
23337 using subclasses_t = mp::List<>;
23338 using fields_t = mp::List<>;
23339};
23340template <> struct node_from_variant_t<568> { using type = SgNonMembershipOp; };
23341
23342// Class: NonrealDecl
23343template <> struct describe_field_t<SgNonrealDecl,SgName,&SgNonrealDecl::p_name> {
23344 using parent = SgNonrealDecl;
23345 using field_type = SgName;
23346 static constexpr size_t position{0};
23347 static constexpr char const * const name{"name"};
23348 static constexpr char const * const typestr{"SgName"};
23349 static constexpr bool traverse{false};
23350 static constexpr auto mbr_ptr{&SgNonrealDecl::p_name};
23351 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23352 using bind = Desc<SgNonrealDecl, SgName SgNonrealDecl::*, &SgNonrealDecl::p_name>;
23353};
23354template <> struct describe_field_t<SgNonrealDecl,SgDeclarationScope*,&SgNonrealDecl::p_nonreal_decl_scope> {
23355 using parent = SgNonrealDecl;
23357 static constexpr size_t position{1};
23358 static constexpr char const * const name{"nonreal_decl_scope"};
23359 static constexpr char const * const typestr{"SgDeclarationScope*"};
23360 static constexpr bool traverse{false};
23361 static constexpr auto mbr_ptr{&SgNonrealDecl::p_nonreal_decl_scope};
23362 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23363 using bind = Desc<SgNonrealDecl, SgDeclarationScope* SgNonrealDecl::*, &SgNonrealDecl::p_nonreal_decl_scope>;
23364};
23365template <> struct describe_field_t<SgNonrealDecl,SgNonrealType*,&SgNonrealDecl::p_type> {
23366 using parent = SgNonrealDecl;
23367 using field_type = SgNonrealType*;
23368 static constexpr size_t position{2};
23369 static constexpr char const * const name{"type"};
23370 static constexpr char const * const typestr{"SgNonrealType*"};
23371 static constexpr bool traverse{false};
23372 static constexpr auto mbr_ptr{&SgNonrealDecl::p_type};
23373 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23374 using bind = Desc<SgNonrealDecl, SgNonrealType* SgNonrealDecl::*, &SgNonrealDecl::p_type>;
23375};
23376template <> struct describe_field_t<SgNonrealDecl,int,&SgNonrealDecl::p_template_parameter_position> {
23377 using parent = SgNonrealDecl;
23378 using field_type = int;
23379 static constexpr size_t position{3};
23380 static constexpr char const * const name{"template_parameter_position"};
23381 static constexpr char const * const typestr{"int"};
23382 static constexpr bool traverse{false};
23383 static constexpr auto mbr_ptr{&SgNonrealDecl::p_template_parameter_position};
23384 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23385 using bind = Desc<SgNonrealDecl, int SgNonrealDecl::*, &SgNonrealDecl::p_template_parameter_position>;
23386};
23387template <> struct describe_field_t<SgNonrealDecl,int,&SgNonrealDecl::p_template_parameter_depth> {
23388 using parent = SgNonrealDecl;
23389 using field_type = int;
23390 static constexpr size_t position{4};
23391 static constexpr char const * const name{"template_parameter_depth"};
23392 static constexpr char const * const typestr{"int"};
23393 static constexpr bool traverse{false};
23394 static constexpr auto mbr_ptr{&SgNonrealDecl::p_template_parameter_depth};
23395 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23396 using bind = Desc<SgNonrealDecl, int SgNonrealDecl::*, &SgNonrealDecl::p_template_parameter_depth>;
23397};
23398template <> struct describe_field_t<SgNonrealDecl,SgDeclarationStatement*,&SgNonrealDecl::p_templateDeclaration> {
23399 using parent = SgNonrealDecl;
23401 static constexpr size_t position{5};
23402 static constexpr char const * const name{"templateDeclaration"};
23403 static constexpr char const * const typestr{"SgDeclarationStatement*"};
23404 static constexpr bool traverse{false};
23405 static constexpr auto mbr_ptr{&SgNonrealDecl::p_templateDeclaration};
23406 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23407 using bind = Desc<SgNonrealDecl, SgDeclarationStatement* SgNonrealDecl::*, &SgNonrealDecl::p_templateDeclaration>;
23408};
23409template <> struct describe_field_t<SgNonrealDecl,SgTemplateArgumentPtrList,&SgNonrealDecl::p_tpl_args> {
23410 using parent = SgNonrealDecl;
23411 using field_type = SgTemplateArgumentPtrList;
23412 static constexpr size_t position{6};
23413 static constexpr char const * const name{"tpl_args"};
23414 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
23415 static constexpr bool traverse{false};
23416 static constexpr auto mbr_ptr{&SgNonrealDecl::p_tpl_args};
23417 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23418 using bind = Desc<SgNonrealDecl, SgTemplateArgumentPtrList SgNonrealDecl::*, &SgNonrealDecl::p_tpl_args>;
23419};
23420template <> struct describe_field_t<SgNonrealDecl,SgTemplateParameterPtrList,&SgNonrealDecl::p_tpl_params> {
23421 using parent = SgNonrealDecl;
23422 using field_type = SgTemplateParameterPtrList;
23423 static constexpr size_t position{7};
23424 static constexpr char const * const name{"tpl_params"};
23425 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
23426 static constexpr bool traverse{false};
23427 static constexpr auto mbr_ptr{&SgNonrealDecl::p_tpl_params};
23428 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23429 using bind = Desc<SgNonrealDecl, SgTemplateParameterPtrList SgNonrealDecl::*, &SgNonrealDecl::p_tpl_params>;
23430};
23431template <> struct describe_field_t<SgNonrealDecl,bool,&SgNonrealDecl::p_is_class_member> {
23432 using parent = SgNonrealDecl;
23433 using field_type = bool;
23434 static constexpr size_t position{8};
23435 static constexpr char const * const name{"is_class_member"};
23436 static constexpr char const * const typestr{"bool"};
23437 static constexpr bool traverse{false};
23438 static constexpr auto mbr_ptr{&SgNonrealDecl::p_is_class_member};
23439 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23440 using bind = Desc<SgNonrealDecl, bool SgNonrealDecl::*, &SgNonrealDecl::p_is_class_member>;
23441};
23442template <> struct describe_field_t<SgNonrealDecl,bool,&SgNonrealDecl::p_is_template_param> {
23443 using parent = SgNonrealDecl;
23444 using field_type = bool;
23445 static constexpr size_t position{9};
23446 static constexpr char const * const name{"is_template_param"};
23447 static constexpr char const * const typestr{"bool"};
23448 static constexpr bool traverse{false};
23449 static constexpr auto mbr_ptr{&SgNonrealDecl::p_is_template_param};
23450 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23451 using bind = Desc<SgNonrealDecl, bool SgNonrealDecl::*, &SgNonrealDecl::p_is_template_param>;
23452};
23453template <> struct describe_field_t<SgNonrealDecl,bool,&SgNonrealDecl::p_is_template_template_param> {
23454 using parent = SgNonrealDecl;
23455 using field_type = bool;
23456 static constexpr size_t position{10};
23457 static constexpr char const * const name{"is_template_template_param"};
23458 static constexpr char const * const typestr{"bool"};
23459 static constexpr bool traverse{false};
23460 static constexpr auto mbr_ptr{&SgNonrealDecl::p_is_template_template_param};
23461 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23462 using bind = Desc<SgNonrealDecl, bool SgNonrealDecl::*, &SgNonrealDecl::p_is_template_template_param>;
23463};
23464template <> struct describe_field_t<SgNonrealDecl,bool,&SgNonrealDecl::p_is_nonreal_template> {
23465 using parent = SgNonrealDecl;
23466 using field_type = bool;
23467 static constexpr size_t position{11};
23468 static constexpr char const * const name{"is_nonreal_template"};
23469 static constexpr char const * const typestr{"bool"};
23470 static constexpr bool traverse{false};
23471 static constexpr auto mbr_ptr{&SgNonrealDecl::p_is_nonreal_template};
23472 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23473 using bind = Desc<SgNonrealDecl, bool SgNonrealDecl::*, &SgNonrealDecl::p_is_nonreal_template>;
23474};
23475template <> struct describe_field_t<SgNonrealDecl,bool,&SgNonrealDecl::p_is_nonreal_function> {
23476 using parent = SgNonrealDecl;
23477 using field_type = bool;
23478 static constexpr size_t position{12};
23479 static constexpr char const * const name{"is_nonreal_function"};
23480 static constexpr char const * const typestr{"bool"};
23481 static constexpr bool traverse{false};
23482 static constexpr auto mbr_ptr{&SgNonrealDecl::p_is_nonreal_function};
23483 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23484 using bind = Desc<SgNonrealDecl, bool SgNonrealDecl::*, &SgNonrealDecl::p_is_nonreal_function>;
23485};
23495template <> struct node_from_variant_t<569> { using type = SgNonrealDecl; };
23496
23497// Class: NonrealRefExp
23498template <> struct describe_field_t<SgNonrealRefExp,SgNonrealSymbol*,&SgNonrealRefExp::p_symbol> {
23499 using parent = SgNonrealRefExp;
23500 using field_type = SgNonrealSymbol*;
23501 static constexpr size_t position{0};
23502 static constexpr char const * const name{"symbol"};
23503 static constexpr char const * const typestr{"SgNonrealSymbol*"};
23504 static constexpr bool traverse{false};
23505 static constexpr auto mbr_ptr{&SgNonrealRefExp::p_symbol};
23506 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23507 using bind = Desc<SgNonrealRefExp, SgNonrealSymbol* SgNonrealRefExp::*, &SgNonrealRefExp::p_symbol>;
23508};
23509template <> struct describe_field_t<SgNonrealRefExp,int,&SgNonrealRefExp::p_name_qualification_length> {
23510 using parent = SgNonrealRefExp;
23511 using field_type = int;
23512 static constexpr size_t position{1};
23513 static constexpr char const * const name{"name_qualification_length"};
23514 static constexpr char const * const typestr{"int"};
23515 static constexpr bool traverse{false};
23516 static constexpr auto mbr_ptr{&SgNonrealRefExp::p_name_qualification_length};
23517 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23518 using bind = Desc<SgNonrealRefExp, int SgNonrealRefExp::*, &SgNonrealRefExp::p_name_qualification_length>;
23519};
23520template <> struct describe_field_t<SgNonrealRefExp,bool,&SgNonrealRefExp::p_type_elaboration_required> {
23521 using parent = SgNonrealRefExp;
23522 using field_type = bool;
23523 static constexpr size_t position{2};
23524 static constexpr char const * const name{"type_elaboration_required"};
23525 static constexpr char const * const typestr{"bool"};
23526 static constexpr bool traverse{false};
23527 static constexpr auto mbr_ptr{&SgNonrealRefExp::p_type_elaboration_required};
23528 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23529 using bind = Desc<SgNonrealRefExp, bool SgNonrealRefExp::*, &SgNonrealRefExp::p_type_elaboration_required>;
23530};
23531template <> struct describe_field_t<SgNonrealRefExp,bool,&SgNonrealRefExp::p_global_qualification_required> {
23532 using parent = SgNonrealRefExp;
23533 using field_type = bool;
23534 static constexpr size_t position{3};
23535 static constexpr char const * const name{"global_qualification_required"};
23536 static constexpr char const * const typestr{"bool"};
23537 static constexpr bool traverse{false};
23538 static constexpr auto mbr_ptr{&SgNonrealRefExp::p_global_qualification_required};
23539 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23540 using bind = Desc<SgNonrealRefExp, bool SgNonrealRefExp::*, &SgNonrealRefExp::p_global_qualification_required>;
23541};
23551template <> struct node_from_variant_t<570> { using type = SgNonrealRefExp; };
23552
23553// Class: NonrealSymbol
23554template <> struct describe_field_t<SgNonrealSymbol,SgNonrealDecl*,&SgNonrealSymbol::p_declaration> {
23555 using parent = SgNonrealSymbol;
23556 using field_type = SgNonrealDecl*;
23557 static constexpr size_t position{0};
23558 static constexpr char const * const name{"declaration"};
23559 static constexpr char const * const typestr{"SgNonrealDecl*"};
23560 static constexpr bool traverse{true};
23561 static constexpr auto mbr_ptr{&SgNonrealSymbol::p_declaration};
23562 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23563 using bind = Desc<SgNonrealSymbol, SgNonrealDecl* SgNonrealSymbol::*, &SgNonrealSymbol::p_declaration>;
23564};
23566 using node = SgNonrealSymbol;
23567 using base = SgSymbol;
23568 static constexpr char const * const name{"NonrealSymbol"};
23569 static constexpr unsigned long variant{571};
23570 static constexpr bool concrete{true};
23571 using subclasses_t = mp::List<>;
23573};
23574template <> struct node_from_variant_t<571> { using type = SgNonrealSymbol; };
23575
23576// Class: NonrealType
23577template <> struct describe_node_t<SgNonrealType> {
23578 using node = SgNonrealType;
23579 using base = SgNamedType;
23580 static constexpr char const * const name{"NonrealType"};
23581 static constexpr unsigned long variant{572};
23582 static constexpr bool concrete{true};
23583 using subclasses_t = mp::List<>;
23584 using fields_t = mp::List<>;
23585};
23586template <> struct node_from_variant_t<572> { using type = SgNonrealType; };
23587
23588// Class: NonrealBaseClass
23589template <> struct describe_field_t<SgNonrealBaseClass,SgNonrealDecl*,&SgNonrealBaseClass::p_base_class_nonreal> {
23590 using parent = SgNonrealBaseClass;
23591 using field_type = SgNonrealDecl*;
23592 static constexpr size_t position{0};
23593 static constexpr char const * const name{"base_class_nonreal"};
23594 static constexpr char const * const typestr{"SgNonrealDecl*"};
23595 static constexpr bool traverse{true};
23596 static constexpr auto mbr_ptr{&SgNonrealBaseClass::p_base_class_nonreal};
23597 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23598 using bind = Desc<SgNonrealBaseClass, SgNonrealDecl* SgNonrealBaseClass::*, &SgNonrealBaseClass::p_base_class_nonreal>;
23599};
23601 using node = SgNonrealBaseClass;
23602 using base = SgBaseClass;
23603 static constexpr char const * const name{"NonrealBaseClass"};
23604 static constexpr unsigned long variant{573};
23605 static constexpr bool concrete{true};
23606 using subclasses_t = mp::List<>;
23608};
23609template <> struct node_from_variant_t<573> { using type = SgNonrealBaseClass; };
23610
23611// Class: NullExpression
23613 using node = SgNullExpression;
23614 using base = SgExpression;
23615 static constexpr char const * const name{"NullExpression"};
23616 static constexpr unsigned long variant{574};
23617 static constexpr bool concrete{true};
23618 using subclasses_t = mp::List<>;
23619 using fields_t = mp::List<>;
23620};
23621template <> struct node_from_variant_t<574> { using type = SgNullExpression; };
23622
23623// Class: NullptrValExp
23625 using node = SgNullptrValExp;
23626 using base = SgValueExp;
23627 static constexpr char const * const name{"NullptrValExp"};
23628 static constexpr unsigned long variant{575};
23629 static constexpr bool concrete{true};
23630 using subclasses_t = mp::List<>;
23631 using fields_t = mp::List<>;
23632};
23633template <> struct node_from_variant_t<575> { using type = SgNullptrValExp; };
23634
23635// Class: NullStatement
23637 using node = SgNullStatement;
23638 using base = SgStatement;
23639 static constexpr char const * const name{"NullStatement"};
23640 static constexpr unsigned long variant{576};
23641 static constexpr bool concrete{true};
23642 using subclasses_t = mp::List<>;
23643 using fields_t = mp::List<>;
23644};
23645template <> struct node_from_variant_t<576> { using type = SgNullStatement; };
23646
23647// Class: NullifyStatement
23648template <> struct describe_field_t<SgNullifyStatement,SgExprListExp*,&SgNullifyStatement::p_pointer_list> {
23649 using parent = SgNullifyStatement;
23650 using field_type = SgExprListExp*;
23651 static constexpr size_t position{0};
23652 static constexpr char const * const name{"pointer_list"};
23653 static constexpr char const * const typestr{"SgExprListExp*"};
23654 static constexpr bool traverse{true};
23655 static constexpr auto mbr_ptr{&SgNullifyStatement::p_pointer_list};
23656 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23657 using bind = Desc<SgNullifyStatement, SgExprListExp* SgNullifyStatement::*, &SgNullifyStatement::p_pointer_list>;
23658};
23660 using node = SgNullifyStatement;
23661 using base = SgStatement;
23662 static constexpr char const * const name{"NullifyStatement"};
23663 static constexpr unsigned long variant{577};
23664 static constexpr bool concrete{true};
23665 using subclasses_t = mp::List<>;
23667};
23668template <> struct node_from_variant_t<577> { using type = SgNullifyStatement; };
23669
23670// Class: OmpAtomicStatement
23672 using node = SgOmpAtomicStatement;
23674 static constexpr char const * const name{"OmpAtomicStatement"};
23675 static constexpr unsigned long variant{578};
23676 static constexpr bool concrete{true};
23677 using subclasses_t = mp::List<>;
23678 using fields_t = mp::List<>;
23679};
23680template <> struct node_from_variant_t<578> { using type = SgOmpAtomicStatement; };
23681
23682// Class: OmpBarrierStatement
23685 using base = SgStatement;
23686 static constexpr char const * const name{"OmpBarrierStatement"};
23687 static constexpr unsigned long variant{579};
23688 static constexpr bool concrete{true};
23689 using subclasses_t = mp::List<>;
23690 using fields_t = mp::List<>;
23691};
23692template <> struct node_from_variant_t<579> { using type = SgOmpBarrierStatement; };
23693
23694// Class: OmpCriticalStatement
23695template <> struct describe_field_t<SgOmpCriticalStatement,SgName,&SgOmpCriticalStatement::p_name> {
23697 using field_type = SgName;
23698 static constexpr size_t position{0};
23699 static constexpr char const * const name{"name"};
23700 static constexpr char const * const typestr{"SgName"};
23701 static constexpr bool traverse{false};
23702 static constexpr auto mbr_ptr{&SgOmpCriticalStatement::p_name};
23703 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23704 using bind = Desc<SgOmpCriticalStatement, SgName SgOmpCriticalStatement::*, &SgOmpCriticalStatement::p_name>;
23705};
23708 using base = SgOmpBodyStatement;
23709 static constexpr char const * const name{"OmpCriticalStatement"};
23710 static constexpr unsigned long variant{580};
23711 static constexpr bool concrete{true};
23712 using subclasses_t = mp::List<>;
23714};
23715template <> struct node_from_variant_t<580> { using type = SgOmpCriticalStatement; };
23716
23717// Class: OmpClauseBodyStatement
23718template <> struct describe_field_t<SgOmpClauseBodyStatement,SgOmpClausePtrList,&SgOmpClauseBodyStatement::p_clauses> {
23720 using field_type = SgOmpClausePtrList;
23721 static constexpr size_t position{0};
23722 static constexpr char const * const name{"clauses"};
23723 static constexpr char const * const typestr{"SgOmpClausePtrList"};
23724 static constexpr bool traverse{true};
23725 static constexpr auto mbr_ptr{&SgOmpClauseBodyStatement::p_clauses};
23726 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23727 using bind = Desc<SgOmpClauseBodyStatement, SgOmpClausePtrList SgOmpClauseBodyStatement::*, &SgOmpClauseBodyStatement::p_clauses>;
23728};
23738template <> struct node_from_variant_t<581> { using type = SgOmpClauseBodyStatement; };
23739
23740// Class: OmpBodyStatement
23741template <> struct describe_field_t<SgOmpBodyStatement,SgStatement*,&SgOmpBodyStatement::p_body> {
23742 using parent = SgOmpBodyStatement;
23743 using field_type = SgStatement*;
23744 static constexpr size_t position{0};
23745 static constexpr char const * const name{"body"};
23746 static constexpr char const * const typestr{"SgStatement*"};
23747 static constexpr bool traverse{true};
23748 static constexpr auto mbr_ptr{&SgOmpBodyStatement::p_body};
23749 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23750 using bind = Desc<SgOmpBodyStatement, SgStatement* SgOmpBodyStatement::*, &SgOmpBodyStatement::p_body>;
23751};
23753 using node = SgOmpBodyStatement;
23754 using base = SgStatement;
23755 static constexpr char const * const name{"OmpBodyStatement"};
23756 static constexpr unsigned long variant{582};
23757 static constexpr bool concrete{false};
23760};
23761template <> struct node_from_variant_t<582> { using type = SgOmpBodyStatement; };
23762
23763// Class: OmpDoStatement
23765 using node = SgOmpDoStatement;
23767 static constexpr char const * const name{"OmpDoStatement"};
23768 static constexpr unsigned long variant{583};
23769 static constexpr bool concrete{true};
23770 using subclasses_t = mp::List<>;
23771 using fields_t = mp::List<>;
23772};
23773template <> struct node_from_variant_t<583> { using type = SgOmpDoStatement; };
23774
23775// Class: OmpFlushStatement
23776template <> struct describe_field_t<SgOmpFlushStatement,SgVarRefExpPtrList,&SgOmpFlushStatement::p_variables> {
23778 using field_type = SgVarRefExpPtrList;
23779 static constexpr size_t position{0};
23780 static constexpr char const * const name{"variables"};
23781 static constexpr char const * const typestr{"SgVarRefExpPtrList"};
23782 static constexpr bool traverse{true};
23783 static constexpr auto mbr_ptr{&SgOmpFlushStatement::p_variables};
23784 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23785 using bind = Desc<SgOmpFlushStatement, SgVarRefExpPtrList SgOmpFlushStatement::*, &SgOmpFlushStatement::p_variables>;
23786};
23788 using node = SgOmpFlushStatement;
23789 using base = SgStatement;
23790 static constexpr char const * const name{"OmpFlushStatement"};
23791 static constexpr unsigned long variant{584};
23792 static constexpr bool concrete{true};
23793 using subclasses_t = mp::List<>;
23795};
23796template <> struct node_from_variant_t<584> { using type = SgOmpFlushStatement; };
23797
23798// Class: OmpDeclareSimdStatement
23799template <> struct describe_field_t<SgOmpDeclareSimdStatement,SgOmpClausePtrList,&SgOmpDeclareSimdStatement::p_clauses> {
23801 using field_type = SgOmpClausePtrList;
23802 static constexpr size_t position{0};
23803 static constexpr char const * const name{"clauses"};
23804 static constexpr char const * const typestr{"SgOmpClausePtrList"};
23805 static constexpr bool traverse{true};
23806 static constexpr auto mbr_ptr{&SgOmpDeclareSimdStatement::p_clauses};
23807 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23808 using bind = Desc<SgOmpDeclareSimdStatement, SgOmpClausePtrList SgOmpDeclareSimdStatement::*, &SgOmpDeclareSimdStatement::p_clauses>;
23809};
23813 static constexpr char const * const name{"OmpDeclareSimdStatement"};
23814 static constexpr unsigned long variant{585};
23815 static constexpr bool concrete{true};
23816 using subclasses_t = mp::List<>;
23818};
23819template <> struct node_from_variant_t<585> { using type = SgOmpDeclareSimdStatement; };
23820
23821// Class: OmpForStatement
23823 using node = SgOmpForStatement;
23825 static constexpr char const * const name{"OmpForStatement"};
23826 static constexpr unsigned long variant{586};
23827 static constexpr bool concrete{true};
23828 using subclasses_t = mp::List<>;
23829 using fields_t = mp::List<>;
23830};
23831template <> struct node_from_variant_t<586> { using type = SgOmpForStatement; };
23832
23833// Class: OmpForSimdStatement
23837 static constexpr char const * const name{"OmpForSimdStatement"};
23838 static constexpr unsigned long variant{587};
23839 static constexpr bool concrete{true};
23840 using subclasses_t = mp::List<>;
23841 using fields_t = mp::List<>;
23842};
23843template <> struct node_from_variant_t<587> { using type = SgOmpForSimdStatement; };
23844
23845// Class: OmpMasterStatement
23847 using node = SgOmpMasterStatement;
23848 using base = SgOmpBodyStatement;
23849 static constexpr char const * const name{"OmpMasterStatement"};
23850 static constexpr unsigned long variant{588};
23851 static constexpr bool concrete{true};
23852 using subclasses_t = mp::List<>;
23853 using fields_t = mp::List<>;
23854};
23855template <> struct node_from_variant_t<588> { using type = SgOmpMasterStatement; };
23856
23857// Class: OmpOrderedStatement
23860 using base = SgOmpBodyStatement;
23861 static constexpr char const * const name{"OmpOrderedStatement"};
23862 static constexpr unsigned long variant{589};
23863 static constexpr bool concrete{true};
23864 using subclasses_t = mp::List<>;
23865 using fields_t = mp::List<>;
23866};
23867template <> struct node_from_variant_t<589> { using type = SgOmpOrderedStatement; };
23868
23869// Class: OmpParallelStatement
23873 static constexpr char const * const name{"OmpParallelStatement"};
23874 static constexpr unsigned long variant{590};
23875 static constexpr bool concrete{true};
23876 using subclasses_t = mp::List<>;
23877 using fields_t = mp::List<>;
23878};
23879template <> struct node_from_variant_t<590> { using type = SgOmpParallelStatement; };
23880
23881// Class: OmpSectionStatement
23884 using base = SgOmpBodyStatement;
23885 static constexpr char const * const name{"OmpSectionStatement"};
23886 static constexpr unsigned long variant{591};
23887 static constexpr bool concrete{true};
23888 using subclasses_t = mp::List<>;
23889 using fields_t = mp::List<>;
23890};
23891template <> struct node_from_variant_t<591> { using type = SgOmpSectionStatement; };
23892
23893// Class: OmpSectionsStatement
23897 static constexpr char const * const name{"OmpSectionsStatement"};
23898 static constexpr unsigned long variant{592};
23899 static constexpr bool concrete{true};
23900 using subclasses_t = mp::List<>;
23901 using fields_t = mp::List<>;
23902};
23903template <> struct node_from_variant_t<592> { using type = SgOmpSectionsStatement; };
23904
23905// Class: OmpSingleStatement
23907 using node = SgOmpSingleStatement;
23909 static constexpr char const * const name{"OmpSingleStatement"};
23910 static constexpr unsigned long variant{593};
23911 static constexpr bool concrete{true};
23912 using subclasses_t = mp::List<>;
23913 using fields_t = mp::List<>;
23914};
23915template <> struct node_from_variant_t<593> { using type = SgOmpSingleStatement; };
23916
23917// Class: OmpTaskStatement
23919 using node = SgOmpTaskStatement;
23921 static constexpr char const * const name{"OmpTaskStatement"};
23922 static constexpr unsigned long variant{594};
23923 static constexpr bool concrete{true};
23924 using subclasses_t = mp::List<>;
23925 using fields_t = mp::List<>;
23926};
23927template <> struct node_from_variant_t<594> { using type = SgOmpTaskStatement; };
23928
23929// Class: OmpTaskwaitStatement
23932 using base = SgStatement;
23933 static constexpr char const * const name{"OmpTaskwaitStatement"};
23934 static constexpr unsigned long variant{595};
23935 static constexpr bool concrete{true};
23936 using subclasses_t = mp::List<>;
23937 using fields_t = mp::List<>;
23938};
23939template <> struct node_from_variant_t<595> { using type = SgOmpTaskwaitStatement; };
23940
23941// Class: OmpThreadprivateStatement
23942template <> struct describe_field_t<SgOmpThreadprivateStatement,SgVarRefExpPtrList,&SgOmpThreadprivateStatement::p_variables> {
23944 using field_type = SgVarRefExpPtrList;
23945 static constexpr size_t position{0};
23946 static constexpr char const * const name{"variables"};
23947 static constexpr char const * const typestr{"SgVarRefExpPtrList"};
23948 static constexpr bool traverse{true};
23949 static constexpr auto mbr_ptr{&SgOmpThreadprivateStatement::p_variables};
23950 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
23951 using bind = Desc<SgOmpThreadprivateStatement, SgVarRefExpPtrList SgOmpThreadprivateStatement::*, &SgOmpThreadprivateStatement::p_variables>;
23952};
23956 static constexpr char const * const name{"OmpThreadprivateStatement"};
23957 static constexpr unsigned long variant{596};
23958 static constexpr bool concrete{true};
23959 using subclasses_t = mp::List<>;
23961};
23962template <> struct node_from_variant_t<596> { using type = SgOmpThreadprivateStatement; };
23963
23964// Class: OmpWorkshareStatement
23967 using base = SgOmpBodyStatement;
23968 static constexpr char const * const name{"OmpWorkshareStatement"};
23969 static constexpr unsigned long variant{597};
23970 static constexpr bool concrete{true};
23971 using subclasses_t = mp::List<>;
23972 using fields_t = mp::List<>;
23973};
23974template <> struct node_from_variant_t<597> { using type = SgOmpWorkshareStatement; };
23975
23976// Class: OmpTargetStatement
23978 using node = SgOmpTargetStatement;
23980 static constexpr char const * const name{"OmpTargetStatement"};
23981 static constexpr unsigned long variant{598};
23982 static constexpr bool concrete{true};
23983 using subclasses_t = mp::List<>;
23984 using fields_t = mp::List<>;
23985};
23986template <> struct node_from_variant_t<598> { using type = SgOmpTargetStatement; };
23987
23988// Class: OmpTargetDataStatement
23992 static constexpr char const * const name{"OmpTargetDataStatement"};
23993 static constexpr unsigned long variant{599};
23994 static constexpr bool concrete{true};
23995 using subclasses_t = mp::List<>;
23996 using fields_t = mp::List<>;
23997};
23998template <> struct node_from_variant_t<599> { using type = SgOmpTargetDataStatement; };
23999
24000// Class: OmpSimdStatement
24002 using node = SgOmpSimdStatement;
24004 static constexpr char const * const name{"OmpSimdStatement"};
24005 static constexpr unsigned long variant{600};
24006 static constexpr bool concrete{true};
24007 using subclasses_t = mp::List<>;
24008 using fields_t = mp::List<>;
24009};
24010template <> struct node_from_variant_t<600> { using type = SgOmpSimdStatement; };
24011
24012// Class: OmpClause
24013template <> struct describe_node_t<SgOmpClause> {
24014 using node = SgOmpClause;
24015 using base = SgLocatedNodeSupport;
24016 static constexpr char const * const name{"OmpClause"};
24017 static constexpr unsigned long variant{601};
24018 static constexpr bool concrete{false};
24020 using fields_t = mp::List<>;
24021};
24022template <> struct node_from_variant_t<601> { using type = SgOmpClause; };
24023
24024// Class: OmpBeginClause
24026 using node = SgOmpBeginClause;
24027 using base = SgOmpClause;
24028 static constexpr char const * const name{"OmpBeginClause"};
24029 static constexpr unsigned long variant{602};
24030 static constexpr bool concrete{true};
24031 using subclasses_t = mp::List<>;
24032 using fields_t = mp::List<>;
24033};
24034template <> struct node_from_variant_t<602> { using type = SgOmpBeginClause; };
24035
24036// Class: OmpCollapseClause
24038 using node = SgOmpCollapseClause;
24040 static constexpr char const * const name{"OmpCollapseClause"};
24041 static constexpr unsigned long variant{603};
24042 static constexpr bool concrete{true};
24043 using subclasses_t = mp::List<>;
24044 using fields_t = mp::List<>;
24045};
24046template <> struct node_from_variant_t<603> { using type = SgOmpCollapseClause; };
24047
24048// Class: OmpCopyinClause
24050 using node = SgOmpCopyinClause;
24051 using base = SgOmpVariablesClause;
24052 static constexpr char const * const name{"OmpCopyinClause"};
24053 static constexpr unsigned long variant{604};
24054 static constexpr bool concrete{true};
24055 using subclasses_t = mp::List<>;
24056 using fields_t = mp::List<>;
24057};
24058template <> struct node_from_variant_t<604> { using type = SgOmpCopyinClause; };
24059
24060// Class: OmpCopyprivateClause
24063 using base = SgOmpVariablesClause;
24064 static constexpr char const * const name{"OmpCopyprivateClause"};
24065 static constexpr unsigned long variant{605};
24066 static constexpr bool concrete{true};
24067 using subclasses_t = mp::List<>;
24068 using fields_t = mp::List<>;
24069};
24070template <> struct node_from_variant_t<605> { using type = SgOmpCopyprivateClause; };
24071
24072// Class: OmpDefaultClause
24073template <> struct describe_field_t<SgOmpDefaultClause,SgOmpClause::omp_default_option_enum,&SgOmpDefaultClause::p_data_sharing> {
24074 using parent = SgOmpDefaultClause;
24076 static constexpr size_t position{0};
24077 static constexpr char const * const name{"data_sharing"};
24078 static constexpr char const * const typestr{"SgOmpClause::omp_default_option_enum"};
24079 static constexpr bool traverse{false};
24080 static constexpr auto mbr_ptr{&SgOmpDefaultClause::p_data_sharing};
24081 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24082 using bind = Desc<SgOmpDefaultClause, SgOmpClause::omp_default_option_enum SgOmpDefaultClause::*, &SgOmpDefaultClause::p_data_sharing>;
24083};
24085 using node = SgOmpDefaultClause;
24086 using base = SgOmpClause;
24087 static constexpr char const * const name{"OmpDefaultClause"};
24088 static constexpr unsigned long variant{606};
24089 static constexpr bool concrete{true};
24090 using subclasses_t = mp::List<>;
24092};
24093template <> struct node_from_variant_t<606> { using type = SgOmpDefaultClause; };
24094
24095// Class: OmpEndClause
24096template <> struct describe_node_t<SgOmpEndClause> {
24097 using node = SgOmpEndClause;
24098 using base = SgOmpClause;
24099 static constexpr char const * const name{"OmpEndClause"};
24100 static constexpr unsigned long variant{607};
24101 static constexpr bool concrete{true};
24102 using subclasses_t = mp::List<>;
24103 using fields_t = mp::List<>;
24104};
24105template <> struct node_from_variant_t<607> { using type = SgOmpEndClause; };
24106
24107// Class: OmpExpressionClause
24108template <> struct describe_field_t<SgOmpExpressionClause,SgExpression*,&SgOmpExpressionClause::p_expression> {
24110 using field_type = SgExpression*;
24111 static constexpr size_t position{0};
24112 static constexpr char const * const name{"expression"};
24113 static constexpr char const * const typestr{"SgExpression*"};
24114 static constexpr bool traverse{true};
24115 static constexpr auto mbr_ptr{&SgOmpExpressionClause::p_expression};
24116 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24117 using bind = Desc<SgOmpExpressionClause, SgExpression* SgOmpExpressionClause::*, &SgOmpExpressionClause::p_expression>;
24118};
24121 using base = SgOmpClause;
24122 static constexpr char const * const name{"OmpExpressionClause"};
24123 static constexpr unsigned long variant{608};
24124 static constexpr bool concrete{false};
24127};
24128template <> struct node_from_variant_t<608> { using type = SgOmpExpressionClause; };
24129
24130// Class: OmpFirstprivateClause
24133 using base = SgOmpVariablesClause;
24134 static constexpr char const * const name{"OmpFirstprivateClause"};
24135 static constexpr unsigned long variant{609};
24136 static constexpr bool concrete{true};
24137 using subclasses_t = mp::List<>;
24138 using fields_t = mp::List<>;
24139};
24140template <> struct node_from_variant_t<609> { using type = SgOmpFirstprivateClause; };
24141
24142// Class: OmpIfClause
24143template <> struct describe_node_t<SgOmpIfClause> {
24144 using node = SgOmpIfClause;
24146 static constexpr char const * const name{"OmpIfClause"};
24147 static constexpr unsigned long variant{610};
24148 static constexpr bool concrete{true};
24149 using subclasses_t = mp::List<>;
24150 using fields_t = mp::List<>;
24151};
24152template <> struct node_from_variant_t<610> { using type = SgOmpIfClause; };
24153
24154// Class: OmpFinalClause
24156 using node = SgOmpFinalClause;
24158 static constexpr char const * const name{"OmpFinalClause"};
24159 static constexpr unsigned long variant{611};
24160 static constexpr bool concrete{true};
24161 using subclasses_t = mp::List<>;
24162 using fields_t = mp::List<>;
24163};
24164template <> struct node_from_variant_t<611> { using type = SgOmpFinalClause; };
24165
24166// Class: OmpPriorityClause
24168 using node = SgOmpPriorityClause;
24170 static constexpr char const * const name{"OmpPriorityClause"};
24171 static constexpr unsigned long variant{612};
24172 static constexpr bool concrete{true};
24173 using subclasses_t = mp::List<>;
24174 using fields_t = mp::List<>;
24175};
24176template <> struct node_from_variant_t<612> { using type = SgOmpPriorityClause; };
24177
24178// Class: OmpDeviceClause
24180 using node = SgOmpDeviceClause;
24182 static constexpr char const * const name{"OmpDeviceClause"};
24183 static constexpr unsigned long variant{613};
24184 static constexpr bool concrete{true};
24185 using subclasses_t = mp::List<>;
24186 using fields_t = mp::List<>;
24187};
24188template <> struct node_from_variant_t<613> { using type = SgOmpDeviceClause; };
24189
24190// Class: OmpLastprivateClause
24193 using base = SgOmpVariablesClause;
24194 static constexpr char const * const name{"OmpLastprivateClause"};
24195 static constexpr unsigned long variant{614};
24196 static constexpr bool concrete{true};
24197 using subclasses_t = mp::List<>;
24198 using fields_t = mp::List<>;
24199};
24200template <> struct node_from_variant_t<614> { using type = SgOmpLastprivateClause; };
24201
24202// Class: OmpNowaitClause
24204 using node = SgOmpNowaitClause;
24205 using base = SgOmpClause;
24206 static constexpr char const * const name{"OmpNowaitClause"};
24207 static constexpr unsigned long variant{615};
24208 static constexpr bool concrete{true};
24209 using subclasses_t = mp::List<>;
24210 using fields_t = mp::List<>;
24211};
24212template <> struct node_from_variant_t<615> { using type = SgOmpNowaitClause; };
24213
24214// Class: OmpNumThreadsClause
24218 static constexpr char const * const name{"OmpNumThreadsClause"};
24219 static constexpr unsigned long variant{616};
24220 static constexpr bool concrete{true};
24221 using subclasses_t = mp::List<>;
24222 using fields_t = mp::List<>;
24223};
24224template <> struct node_from_variant_t<616> { using type = SgOmpNumThreadsClause; };
24225
24226// Class: OmpOrderedClause
24228 using node = SgOmpOrderedClause;
24230 static constexpr char const * const name{"OmpOrderedClause"};
24231 static constexpr unsigned long variant{617};
24232 static constexpr bool concrete{true};
24233 using subclasses_t = mp::List<>;
24234 using fields_t = mp::List<>;
24235};
24236template <> struct node_from_variant_t<617> { using type = SgOmpOrderedClause; };
24237
24238// Class: OmpPrivateClause
24240 using node = SgOmpPrivateClause;
24241 using base = SgOmpVariablesClause;
24242 static constexpr char const * const name{"OmpPrivateClause"};
24243 static constexpr unsigned long variant{618};
24244 static constexpr bool concrete{true};
24245 using subclasses_t = mp::List<>;
24246 using fields_t = mp::List<>;
24247};
24248template <> struct node_from_variant_t<618> { using type = SgOmpPrivateClause; };
24249
24250// Class: OmpReductionClause
24251template <> struct describe_field_t<SgOmpReductionClause,SgOmpClause::omp_reduction_operator_enum,&SgOmpReductionClause::p_operation> {
24253 using field_type = SgOmpClause::omp_reduction_operator_enum;
24254 static constexpr size_t position{0};
24255 static constexpr char const * const name{"operation"};
24256 static constexpr char const * const typestr{"SgOmpClause::omp_reduction_operator_enum"};
24257 static constexpr bool traverse{false};
24258 static constexpr auto mbr_ptr{&SgOmpReductionClause::p_operation};
24259 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24260 using bind = Desc<SgOmpReductionClause, SgOmpClause::omp_reduction_operator_enum SgOmpReductionClause::*, &SgOmpReductionClause::p_operation>;
24261};
24263 using node = SgOmpReductionClause;
24264 using base = SgOmpVariablesClause;
24265 static constexpr char const * const name{"OmpReductionClause"};
24266 static constexpr unsigned long variant{619};
24267 static constexpr bool concrete{true};
24268 using subclasses_t = mp::List<>;
24270};
24271template <> struct node_from_variant_t<619> { using type = SgOmpReductionClause; };
24272
24273// Class: OmpScheduleClause
24274template <> struct describe_field_t<SgOmpScheduleClause,SgOmpClause::omp_schedule_kind_enum,&SgOmpScheduleClause::p_kind> {
24276 using field_type = SgOmpClause::omp_schedule_kind_enum;
24277 static constexpr size_t position{0};
24278 static constexpr char const * const name{"kind"};
24279 static constexpr char const * const typestr{"SgOmpClause::omp_schedule_kind_enum"};
24280 static constexpr bool traverse{false};
24281 static constexpr auto mbr_ptr{&SgOmpScheduleClause::p_kind};
24282 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24283 using bind = Desc<SgOmpScheduleClause, SgOmpClause::omp_schedule_kind_enum SgOmpScheduleClause::*, &SgOmpScheduleClause::p_kind>;
24284};
24285template <> struct describe_field_t<SgOmpScheduleClause,SgExpression*,&SgOmpScheduleClause::p_chunk_size> {
24287 using field_type = SgExpression*;
24288 static constexpr size_t position{1};
24289 static constexpr char const * const name{"chunk_size"};
24290 static constexpr char const * const typestr{"SgExpression*"};
24291 static constexpr bool traverse{true};
24292 static constexpr auto mbr_ptr{&SgOmpScheduleClause::p_chunk_size};
24293 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24294 using bind = Desc<SgOmpScheduleClause, SgExpression* SgOmpScheduleClause::*, &SgOmpScheduleClause::p_chunk_size>;
24295};
24297 using node = SgOmpScheduleClause;
24298 using base = SgOmpClause;
24299 static constexpr char const * const name{"OmpScheduleClause"};
24300 static constexpr unsigned long variant{620};
24301 static constexpr bool concrete{true};
24302 using subclasses_t = mp::List<>;
24304};
24305template <> struct node_from_variant_t<620> { using type = SgOmpScheduleClause; };
24306
24307// Class: OmpSharedClause
24309 using node = SgOmpSharedClause;
24310 using base = SgOmpVariablesClause;
24311 static constexpr char const * const name{"OmpSharedClause"};
24312 static constexpr unsigned long variant{621};
24313 static constexpr bool concrete{true};
24314 using subclasses_t = mp::List<>;
24315 using fields_t = mp::List<>;
24316};
24317template <> struct node_from_variant_t<621> { using type = SgOmpSharedClause; };
24318
24319// Class: OmpUntiedClause
24321 using node = SgOmpUntiedClause;
24322 using base = SgOmpClause;
24323 static constexpr char const * const name{"OmpUntiedClause"};
24324 static constexpr unsigned long variant{622};
24325 static constexpr bool concrete{true};
24326 using subclasses_t = mp::List<>;
24327 using fields_t = mp::List<>;
24328};
24329template <> struct node_from_variant_t<622> { using type = SgOmpUntiedClause; };
24330
24331// Class: OmpMergeableClause
24333 using node = SgOmpMergeableClause;
24334 using base = SgOmpClause;
24335 static constexpr char const * const name{"OmpMergeableClause"};
24336 static constexpr unsigned long variant{623};
24337 static constexpr bool concrete{true};
24338 using subclasses_t = mp::List<>;
24339 using fields_t = mp::List<>;
24340};
24341template <> struct node_from_variant_t<623> { using type = SgOmpMergeableClause; };
24342
24343// Class: OmpVariablesClause
24344template <> struct describe_field_t<SgOmpVariablesClause,SgExprListExp*,&SgOmpVariablesClause::p_variables> {
24346 using field_type = SgExprListExp*;
24347 static constexpr size_t position{0};
24348 static constexpr char const * const name{"variables"};
24349 static constexpr char const * const typestr{"SgExprListExp*"};
24350 static constexpr bool traverse{true};
24351 static constexpr auto mbr_ptr{&SgOmpVariablesClause::p_variables};
24352 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24353 using bind = Desc<SgOmpVariablesClause, SgExprListExp* SgOmpVariablesClause::*, &SgOmpVariablesClause::p_variables>;
24354};
24364template <> struct node_from_variant_t<624> { using type = SgOmpVariablesClause; };
24365
24366// Class: OmpMapClause
24367template <> struct describe_field_t<SgOmpMapClause,SgOmpClause::omp_map_operator_enum,&SgOmpMapClause::p_operation> {
24368 using parent = SgOmpMapClause;
24369 using field_type = SgOmpClause::omp_map_operator_enum;
24370 static constexpr size_t position{0};
24371 static constexpr char const * const name{"operation"};
24372 static constexpr char const * const typestr{"SgOmpClause::omp_map_operator_enum"};
24373 static constexpr bool traverse{false};
24374 static constexpr auto mbr_ptr{&SgOmpMapClause::p_operation};
24375 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24376 using bind = Desc<SgOmpMapClause, SgOmpClause::omp_map_operator_enum SgOmpMapClause::*, &SgOmpMapClause::p_operation>;
24377};
24378template <> struct describe_field_t<SgOmpMapClause,std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > >,&SgOmpMapClause::p_array_dimensions> {
24379 using parent = SgOmpMapClause;
24380 using field_type = std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > >;
24381 static constexpr size_t position{1};
24382 static constexpr char const * const name{"array_dimensions"};
24383 static constexpr char const * const typestr{"std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > >"};
24384 static constexpr bool traverse{false};
24385 static constexpr auto mbr_ptr{&SgOmpMapClause::p_array_dimensions};
24386 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24387 using bind = Desc<SgOmpMapClause, std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > SgOmpMapClause::*, &SgOmpMapClause::p_array_dimensions>;
24388};
24389template <> struct describe_field_t<SgOmpMapClause,std::map<SgSymbol*, std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > >,&SgOmpMapClause::p_dist_data_policies> {
24390 using parent = SgOmpMapClause;
24391 using field_type = std::map<SgSymbol*, std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > >;
24392 static constexpr size_t position{2};
24393 static constexpr char const * const name{"dist_data_policies"};
24394 static constexpr char const * const typestr{"std::map<SgSymbol*, std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > >"};
24395 static constexpr bool traverse{false};
24396 static constexpr auto mbr_ptr{&SgOmpMapClause::p_dist_data_policies};
24397 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24398 using bind = Desc<SgOmpMapClause, std::map<SgSymbol*, std::vector < std::pair <SgOmpClause::omp_map_dist_data_enum, SgExpression*> > > SgOmpMapClause::*, &SgOmpMapClause::p_dist_data_policies>;
24399};
24400template <> struct describe_node_t<SgOmpMapClause> {
24401 using node = SgOmpMapClause;
24402 using base = SgOmpVariablesClause;
24403 static constexpr char const * const name{"OmpMapClause"};
24404 static constexpr unsigned long variant{625};
24405 static constexpr bool concrete{true};
24406 using subclasses_t = mp::List<>;
24408};
24409template <> struct node_from_variant_t<625> { using type = SgOmpMapClause; };
24410
24411// Class: OmpSafelenClause
24413 using node = SgOmpSafelenClause;
24415 static constexpr char const * const name{"OmpSafelenClause"};
24416 static constexpr unsigned long variant{626};
24417 static constexpr bool concrete{true};
24418 using subclasses_t = mp::List<>;
24419 using fields_t = mp::List<>;
24420};
24421template <> struct node_from_variant_t<626> { using type = SgOmpSafelenClause; };
24422
24423// Class: OmpSimdlenClause
24425 using node = SgOmpSimdlenClause;
24427 static constexpr char const * const name{"OmpSimdlenClause"};
24428 static constexpr unsigned long variant{627};
24429 static constexpr bool concrete{true};
24430 using subclasses_t = mp::List<>;
24431 using fields_t = mp::List<>;
24432};
24433template <> struct node_from_variant_t<627> { using type = SgOmpSimdlenClause; };
24434
24435// Class: OmpLinearClause
24436template <> struct describe_field_t<SgOmpLinearClause,SgExpression*,&SgOmpLinearClause::p_step> {
24437 using parent = SgOmpLinearClause;
24438 using field_type = SgExpression*;
24439 static constexpr size_t position{0};
24440 static constexpr char const * const name{"step"};
24441 static constexpr char const * const typestr{"SgExpression*"};
24442 static constexpr bool traverse{true};
24443 static constexpr auto mbr_ptr{&SgOmpLinearClause::p_step};
24444 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24445 using bind = Desc<SgOmpLinearClause, SgExpression* SgOmpLinearClause::*, &SgOmpLinearClause::p_step>;
24446};
24448 using node = SgOmpLinearClause;
24449 using base = SgOmpVariablesClause;
24450 static constexpr char const * const name{"OmpLinearClause"};
24451 static constexpr unsigned long variant{628};
24452 static constexpr bool concrete{true};
24453 using subclasses_t = mp::List<>;
24455};
24456template <> struct node_from_variant_t<628> { using type = SgOmpLinearClause; };
24457
24458// Class: OmpUniformClause
24460 using node = SgOmpUniformClause;
24461 using base = SgOmpVariablesClause;
24462 static constexpr char const * const name{"OmpUniformClause"};
24463 static constexpr unsigned long variant{629};
24464 static constexpr bool concrete{true};
24465 using subclasses_t = mp::List<>;
24466 using fields_t = mp::List<>;
24467};
24468template <> struct node_from_variant_t<629> { using type = SgOmpUniformClause; };
24469
24470// Class: OmpAlignedClause
24471template <> struct describe_field_t<SgOmpAlignedClause,SgExpression*,&SgOmpAlignedClause::p_alignment> {
24472 using parent = SgOmpAlignedClause;
24473 using field_type = SgExpression*;
24474 static constexpr size_t position{0};
24475 static constexpr char const * const name{"alignment"};
24476 static constexpr char const * const typestr{"SgExpression*"};
24477 static constexpr bool traverse{true};
24478 static constexpr auto mbr_ptr{&SgOmpAlignedClause::p_alignment};
24479 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24480 using bind = Desc<SgOmpAlignedClause, SgExpression* SgOmpAlignedClause::*, &SgOmpAlignedClause::p_alignment>;
24481};
24483 using node = SgOmpAlignedClause;
24484 using base = SgOmpVariablesClause;
24485 static constexpr char const * const name{"OmpAlignedClause"};
24486 static constexpr unsigned long variant{630};
24487 static constexpr bool concrete{true};
24488 using subclasses_t = mp::List<>;
24490};
24491template <> struct node_from_variant_t<630> { using type = SgOmpAlignedClause; };
24492
24493// Class: OmpProcBindClause
24494template <> struct describe_field_t<SgOmpProcBindClause,SgOmpClause::omp_proc_bind_policy_enum,&SgOmpProcBindClause::p_policy> {
24496 using field_type = SgOmpClause::omp_proc_bind_policy_enum;
24497 static constexpr size_t position{0};
24498 static constexpr char const * const name{"policy"};
24499 static constexpr char const * const typestr{"SgOmpClause::omp_proc_bind_policy_enum"};
24500 static constexpr bool traverse{false};
24501 static constexpr auto mbr_ptr{&SgOmpProcBindClause::p_policy};
24502 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24503 using bind = Desc<SgOmpProcBindClause, SgOmpClause::omp_proc_bind_policy_enum SgOmpProcBindClause::*, &SgOmpProcBindClause::p_policy>;
24504};
24506 using node = SgOmpProcBindClause;
24507 using base = SgOmpClause;
24508 static constexpr char const * const name{"OmpProcBindClause"};
24509 static constexpr unsigned long variant{631};
24510 static constexpr bool concrete{true};
24511 using subclasses_t = mp::List<>;
24513};
24514template <> struct node_from_variant_t<631> { using type = SgOmpProcBindClause; };
24515
24516// Class: OmpAtomicClause
24517template <> struct describe_field_t<SgOmpAtomicClause,SgOmpClause::omp_atomic_clause_enum,&SgOmpAtomicClause::p_atomicity> {
24518 using parent = SgOmpAtomicClause;
24519 using field_type = SgOmpClause::omp_atomic_clause_enum;
24520 static constexpr size_t position{0};
24521 static constexpr char const * const name{"atomicity"};
24522 static constexpr char const * const typestr{"SgOmpClause::omp_atomic_clause_enum"};
24523 static constexpr bool traverse{false};
24524 static constexpr auto mbr_ptr{&SgOmpAtomicClause::p_atomicity};
24525 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24526 using bind = Desc<SgOmpAtomicClause, SgOmpClause::omp_atomic_clause_enum SgOmpAtomicClause::*, &SgOmpAtomicClause::p_atomicity>;
24527};
24529 using node = SgOmpAtomicClause;
24530 using base = SgOmpClause;
24531 static constexpr char const * const name{"OmpAtomicClause"};
24532 static constexpr unsigned long variant{632};
24533 static constexpr bool concrete{true};
24534 using subclasses_t = mp::List<>;
24536};
24537template <> struct node_from_variant_t<632> { using type = SgOmpAtomicClause; };
24538
24539// Class: OmpInbranchClause
24541 using node = SgOmpInbranchClause;
24542 using base = SgOmpClause;
24543 static constexpr char const * const name{"OmpInbranchClause"};
24544 static constexpr unsigned long variant{633};
24545 static constexpr bool concrete{true};
24546 using subclasses_t = mp::List<>;
24547 using fields_t = mp::List<>;
24548};
24549template <> struct node_from_variant_t<633> { using type = SgOmpInbranchClause; };
24550
24551// Class: OmpNotinbranchClause
24554 using base = SgOmpClause;
24555 static constexpr char const * const name{"OmpNotinbranchClause"};
24556 static constexpr unsigned long variant{634};
24557 static constexpr bool concrete{true};
24558 using subclasses_t = mp::List<>;
24559 using fields_t = mp::List<>;
24560};
24561template <> struct node_from_variant_t<634> { using type = SgOmpNotinbranchClause; };
24562
24563// Class: OmpDependClause
24564template <> struct describe_field_t<SgOmpDependClause,SgOmpClause::omp_dependence_type_enum,&SgOmpDependClause::p_dependence_type> {
24565 using parent = SgOmpDependClause;
24566 using field_type = SgOmpClause::omp_dependence_type_enum;
24567 static constexpr size_t position{0};
24568 static constexpr char const * const name{"dependence_type"};
24569 static constexpr char const * const typestr{"SgOmpClause::omp_dependence_type_enum"};
24570 static constexpr bool traverse{false};
24571 static constexpr auto mbr_ptr{&SgOmpDependClause::p_dependence_type};
24572 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24573 using bind = Desc<SgOmpDependClause, SgOmpClause::omp_dependence_type_enum SgOmpDependClause::*, &SgOmpDependClause::p_dependence_type>;
24574};
24575template <> struct describe_field_t<SgOmpDependClause,std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > >,&SgOmpDependClause::p_array_dimensions> {
24576 using parent = SgOmpDependClause;
24577 using field_type = std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > >;
24578 static constexpr size_t position{1};
24579 static constexpr char const * const name{"array_dimensions"};
24580 static constexpr char const * const typestr{"std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > >"};
24581 static constexpr bool traverse{false};
24582 static constexpr auto mbr_ptr{&SgOmpDependClause::p_array_dimensions};
24583 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24584 using bind = Desc<SgOmpDependClause, std::map<SgSymbol*, std::vector < std::pair <SgExpression*, SgExpression*> > > SgOmpDependClause::*, &SgOmpDependClause::p_array_dimensions>;
24585};
24587 using node = SgOmpDependClause;
24588 using base = SgOmpVariablesClause;
24589 static constexpr char const * const name{"OmpDependClause"};
24590 static constexpr unsigned long variant{635};
24591 static constexpr bool concrete{true};
24592 using subclasses_t = mp::List<>;
24594};
24595template <> struct node_from_variant_t<635> { using type = SgOmpDependClause; };
24596
24597// Class: OpenclAccessModeModifier
24598template <> struct describe_field_t<SgOpenclAccessModeModifier,SgOpenclAccessModeModifier::access_mode_modifier_enum,&SgOpenclAccessModeModifier::p_modifier> {
24601 static constexpr size_t position{0};
24602 static constexpr char const * const name{"modifier"};
24603 static constexpr char const * const typestr{"SgOpenclAccessModeModifier::access_mode_modifier_enum"};
24604 static constexpr bool traverse{false};
24605 static constexpr auto mbr_ptr{&SgOpenclAccessModeModifier::p_modifier};
24606 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24607 using bind = Desc<SgOpenclAccessModeModifier, SgOpenclAccessModeModifier::access_mode_modifier_enum SgOpenclAccessModeModifier::*, &SgOpenclAccessModeModifier::p_modifier>;
24608};
24611 using base = SgModifier;
24612 static constexpr char const * const name{"OpenclAccessModeModifier"};
24613 static constexpr unsigned long variant{636};
24614 static constexpr bool concrete{true};
24615 using subclasses_t = mp::List<>;
24617};
24618template <> struct node_from_variant_t<636> { using type = SgOpenclAccessModeModifier; };
24619
24620// Class: OpenStatement
24621template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_file> {
24622 using parent = SgOpenStatement;
24623 using field_type = SgExpression*;
24624 static constexpr size_t position{0};
24625 static constexpr char const * const name{"file"};
24626 static constexpr char const * const typestr{"SgExpression*"};
24627 static constexpr bool traverse{true};
24628 static constexpr auto mbr_ptr{&SgOpenStatement::p_file};
24629 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24630 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_file>;
24631};
24632template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_status> {
24633 using parent = SgOpenStatement;
24634 using field_type = SgExpression*;
24635 static constexpr size_t position{1};
24636 static constexpr char const * const name{"status"};
24637 static constexpr char const * const typestr{"SgExpression*"};
24638 static constexpr bool traverse{true};
24639 static constexpr auto mbr_ptr{&SgOpenStatement::p_status};
24640 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24641 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_status>;
24642};
24643template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_access> {
24644 using parent = SgOpenStatement;
24645 using field_type = SgExpression*;
24646 static constexpr size_t position{2};
24647 static constexpr char const * const name{"access"};
24648 static constexpr char const * const typestr{"SgExpression*"};
24649 static constexpr bool traverse{true};
24650 static constexpr auto mbr_ptr{&SgOpenStatement::p_access};
24651 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24652 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_access>;
24653};
24654template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_form> {
24655 using parent = SgOpenStatement;
24656 using field_type = SgExpression*;
24657 static constexpr size_t position{3};
24658 static constexpr char const * const name{"form"};
24659 static constexpr char const * const typestr{"SgExpression*"};
24660 static constexpr bool traverse{true};
24661 static constexpr auto mbr_ptr{&SgOpenStatement::p_form};
24662 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24663 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_form>;
24664};
24665template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_recl> {
24666 using parent = SgOpenStatement;
24667 using field_type = SgExpression*;
24668 static constexpr size_t position{4};
24669 static constexpr char const * const name{"recl"};
24670 static constexpr char const * const typestr{"SgExpression*"};
24671 static constexpr bool traverse{true};
24672 static constexpr auto mbr_ptr{&SgOpenStatement::p_recl};
24673 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24674 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_recl>;
24675};
24676template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_blank> {
24677 using parent = SgOpenStatement;
24678 using field_type = SgExpression*;
24679 static constexpr size_t position{5};
24680 static constexpr char const * const name{"blank"};
24681 static constexpr char const * const typestr{"SgExpression*"};
24682 static constexpr bool traverse{true};
24683 static constexpr auto mbr_ptr{&SgOpenStatement::p_blank};
24684 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24685 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_blank>;
24686};
24687template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_position> {
24688 using parent = SgOpenStatement;
24689 using field_type = SgExpression*;
24690 static constexpr size_t position{6};
24691 static constexpr char const * const name{"position"};
24692 static constexpr char const * const typestr{"SgExpression*"};
24693 static constexpr bool traverse{true};
24694 static constexpr auto mbr_ptr{&SgOpenStatement::p_position};
24695 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24696 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_position>;
24697};
24698template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_action> {
24699 using parent = SgOpenStatement;
24700 using field_type = SgExpression*;
24701 static constexpr size_t position{7};
24702 static constexpr char const * const name{"action"};
24703 static constexpr char const * const typestr{"SgExpression*"};
24704 static constexpr bool traverse{true};
24705 static constexpr auto mbr_ptr{&SgOpenStatement::p_action};
24706 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24707 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_action>;
24708};
24709template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_delim> {
24710 using parent = SgOpenStatement;
24711 using field_type = SgExpression*;
24712 static constexpr size_t position{8};
24713 static constexpr char const * const name{"delim"};
24714 static constexpr char const * const typestr{"SgExpression*"};
24715 static constexpr bool traverse{true};
24716 static constexpr auto mbr_ptr{&SgOpenStatement::p_delim};
24717 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24718 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_delim>;
24719};
24720template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_pad> {
24721 using parent = SgOpenStatement;
24722 using field_type = SgExpression*;
24723 static constexpr size_t position{9};
24724 static constexpr char const * const name{"pad"};
24725 static constexpr char const * const typestr{"SgExpression*"};
24726 static constexpr bool traverse{true};
24727 static constexpr auto mbr_ptr{&SgOpenStatement::p_pad};
24728 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24729 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_pad>;
24730};
24731template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_round> {
24732 using parent = SgOpenStatement;
24733 using field_type = SgExpression*;
24734 static constexpr size_t position{10};
24735 static constexpr char const * const name{"round"};
24736 static constexpr char const * const typestr{"SgExpression*"};
24737 static constexpr bool traverse{true};
24738 static constexpr auto mbr_ptr{&SgOpenStatement::p_round};
24739 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24740 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_round>;
24741};
24742template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_sign> {
24743 using parent = SgOpenStatement;
24744 using field_type = SgExpression*;
24745 static constexpr size_t position{11};
24746 static constexpr char const * const name{"sign"};
24747 static constexpr char const * const typestr{"SgExpression*"};
24748 static constexpr bool traverse{true};
24749 static constexpr auto mbr_ptr{&SgOpenStatement::p_sign};
24750 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24751 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_sign>;
24752};
24753template <> struct describe_field_t<SgOpenStatement,SgExpression*,&SgOpenStatement::p_asynchronous> {
24754 using parent = SgOpenStatement;
24755 using field_type = SgExpression*;
24756 static constexpr size_t position{12};
24757 static constexpr char const * const name{"asynchronous"};
24758 static constexpr char const * const typestr{"SgExpression*"};
24759 static constexpr bool traverse{true};
24760 static constexpr auto mbr_ptr{&SgOpenStatement::p_asynchronous};
24761 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24762 using bind = Desc<SgOpenStatement, SgExpression* SgOpenStatement::*, &SgOpenStatement::p_asynchronous>;
24763};
24773template <> struct node_from_variant_t<637> { using type = SgOpenStatement; };
24774
24775// Class: Options
24776template <> struct describe_field_t<SgOptions,std::ostream*,&SgOptions::p_default_output> {
24777 using parent = SgOptions;
24778 using field_type = std::ostream*;
24779 static constexpr size_t position{0};
24780 static constexpr char const * const name{"default_output"};
24781 static constexpr char const * const typestr{"std::ostream*"};
24782 static constexpr bool traverse{false};
24783 static constexpr auto mbr_ptr{&SgOptions::p_default_output};
24784 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24785 using bind = Desc<SgOptions, std::ostream* SgOptions::*, &SgOptions::p_default_output>;
24786};
24787template <> struct describe_field_t<SgOptions,std::ostream*,&SgOptions::p_debug_output> {
24788 using parent = SgOptions;
24789 using field_type = std::ostream*;
24790 static constexpr size_t position{1};
24791 static constexpr char const * const name{"debug_output"};
24792 static constexpr char const * const typestr{"std::ostream*"};
24793 static constexpr bool traverse{false};
24794 static constexpr auto mbr_ptr{&SgOptions::p_debug_output};
24795 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24796 using bind = Desc<SgOptions, std::ostream* SgOptions::*, &SgOptions::p_debug_output>;
24797};
24798template <> struct describe_field_t<SgOptions,std::ostream*,&SgOptions::p_error_output> {
24799 using parent = SgOptions;
24800 using field_type = std::ostream*;
24801 static constexpr size_t position{2};
24802 static constexpr char const * const name{"error_output"};
24803 static constexpr char const * const typestr{"std::ostream*"};
24804 static constexpr bool traverse{false};
24805 static constexpr auto mbr_ptr{&SgOptions::p_error_output};
24806 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24807 using bind = Desc<SgOptions, std::ostream* SgOptions::*, &SgOptions::p_error_output>;
24808};
24809template <> struct describe_field_t<SgOptions,std::ostream*,&SgOptions::p_logging_output> {
24810 using parent = SgOptions;
24811 using field_type = std::ostream*;
24812 static constexpr size_t position{3};
24813 static constexpr char const * const name{"logging_output"};
24814 static constexpr char const * const typestr{"std::ostream*"};
24815 static constexpr bool traverse{false};
24816 static constexpr auto mbr_ptr{&SgOptions::p_logging_output};
24817 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24818 using bind = Desc<SgOptions, std::ostream* SgOptions::*, &SgOptions::p_logging_output>;
24819};
24820template <> struct describe_field_t<SgOptions,int,&SgOptions::p_debug_level> {
24821 using parent = SgOptions;
24822 using field_type = int;
24823 static constexpr size_t position{4};
24824 static constexpr char const * const name{"debug_level"};
24825 static constexpr char const * const typestr{"int"};
24826 static constexpr bool traverse{false};
24827 static constexpr auto mbr_ptr{&SgOptions::p_debug_level};
24828 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24829 using bind = Desc<SgOptions, int SgOptions::*, &SgOptions::p_debug_level>;
24830};
24831template <> struct describe_field_t<SgOptions,int,&SgOptions::p_logging_level> {
24832 using parent = SgOptions;
24833 using field_type = int;
24834 static constexpr size_t position{5};
24835 static constexpr char const * const name{"logging_level"};
24836 static constexpr char const * const typestr{"int"};
24837 static constexpr bool traverse{false};
24838 static constexpr auto mbr_ptr{&SgOptions::p_logging_level};
24839 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24840 using bind = Desc<SgOptions, int SgOptions::*, &SgOptions::p_logging_level>;
24841};
24851template <> struct node_from_variant_t<638> { using type = SgOptions; };
24852
24853// Class: OrOp
24854template <> struct describe_node_t<SgOrOp> {
24855 using node = SgOrOp;
24856 using base = SgBinaryOp;
24857 static constexpr char const * const name{"OrOp"};
24858 static constexpr unsigned long variant{639};
24859 static constexpr bool concrete{true};
24860 using subclasses_t = mp::List<>;
24861 using fields_t = mp::List<>;
24862};
24863template <> struct node_from_variant_t<639> { using type = SgOrOp; };
24864
24865// Class: ParameterStatement
24867 using node = SgParameterStatement;
24869 static constexpr char const * const name{"ParameterStatement"};
24870 static constexpr unsigned long variant{640};
24871 static constexpr bool concrete{true};
24872 using subclasses_t = mp::List<>;
24873 using fields_t = mp::List<>;
24874};
24875template <> struct node_from_variant_t<640> { using type = SgParameterStatement; };
24876
24877// Class: PartialFunctionModifierType
24881 static constexpr char const * const name{"PartialFunctionModifierType"};
24882 static constexpr unsigned long variant{641};
24883 static constexpr bool concrete{true};
24884 using subclasses_t = mp::List<>;
24885 using fields_t = mp::List<>;
24886};
24887template <> struct node_from_variant_t<641> { using type = SgPartialFunctionModifierType; };
24888
24889// Class: PartialFunctionType
24892 using base = SgMemberFunctionType;
24893 static constexpr char const * const name{"PartialFunctionType"};
24894 static constexpr unsigned long variant{642};
24895 static constexpr bool concrete{true};
24897 using fields_t = mp::List<>;
24898};
24899template <> struct node_from_variant_t<642> { using type = SgPartialFunctionType; };
24900
24901// Class: PassStatement
24903 using node = SgPassStatement;
24904 using base = SgStatement;
24905 static constexpr char const * const name{"PassStatement"};
24906 static constexpr unsigned long variant{643};
24907 static constexpr bool concrete{true};
24908 using subclasses_t = mp::List<>;
24909 using fields_t = mp::List<>;
24910};
24911template <> struct node_from_variant_t<643> { using type = SgPassStatement; };
24912
24913// Class: PlusAssignOp
24914template <> struct describe_node_t<SgPlusAssignOp> {
24915 using node = SgPlusAssignOp;
24916 using base = SgCompoundAssignOp;
24917 static constexpr char const * const name{"PlusAssignOp"};
24918 static constexpr unsigned long variant{644};
24919 static constexpr bool concrete{true};
24920 using subclasses_t = mp::List<>;
24921 using fields_t = mp::List<>;
24922};
24923template <> struct node_from_variant_t<644> { using type = SgPlusAssignOp; };
24924
24925// Class: PlusPlusOp
24926template <> struct describe_node_t<SgPlusPlusOp> {
24927 using node = SgPlusPlusOp;
24928 using base = SgUnaryOp;
24929 static constexpr char const * const name{"PlusPlusOp"};
24930 static constexpr unsigned long variant{645};
24931 static constexpr bool concrete{true};
24932 using subclasses_t = mp::List<>;
24933 using fields_t = mp::List<>;
24934};
24935template <> struct node_from_variant_t<645> { using type = SgPlusPlusOp; };
24936
24937// Class: PntrArrRefExp
24939 using node = SgPntrArrRefExp;
24940 using base = SgBinaryOp;
24941 static constexpr char const * const name{"PntrArrRefExp"};
24942 static constexpr unsigned long variant{646};
24943 static constexpr bool concrete{true};
24944 using subclasses_t = mp::List<>;
24945 using fields_t = mp::List<>;
24946};
24947template <> struct node_from_variant_t<646> { using type = SgPntrArrRefExp; };
24948
24949// Class: PointerAssignOp
24951 using node = SgPointerAssignOp;
24952 using base = SgBinaryOp;
24953 static constexpr char const * const name{"PointerAssignOp"};
24954 static constexpr unsigned long variant{647};
24955 static constexpr bool concrete{true};
24956 using subclasses_t = mp::List<>;
24957 using fields_t = mp::List<>;
24958};
24959template <> struct node_from_variant_t<647> { using type = SgPointerAssignOp; };
24960
24961// Class: PointerDerefExp
24963 using node = SgPointerDerefExp;
24964 using base = SgUnaryOp;
24965 static constexpr char const * const name{"PointerDerefExp"};
24966 static constexpr unsigned long variant{648};
24967 static constexpr bool concrete{true};
24968 using subclasses_t = mp::List<>;
24969 using fields_t = mp::List<>;
24970};
24971template <> struct node_from_variant_t<648> { using type = SgPointerDerefExp; };
24972
24973// Class: PointerMemberType
24974template <> struct describe_field_t<SgPointerMemberType,SgType*,&SgPointerMemberType::p_class_type> {
24976 using field_type = SgType*;
24977 static constexpr size_t position{0};
24978 static constexpr char const * const name{"class_type"};
24979 static constexpr char const * const typestr{"SgType*"};
24980 static constexpr bool traverse{false};
24981 static constexpr auto mbr_ptr{&SgPointerMemberType::p_class_type};
24982 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
24983 using bind = Desc<SgPointerMemberType, SgType* SgPointerMemberType::*, &SgPointerMemberType::p_class_type>;
24984};
24986 using node = SgPointerMemberType;
24987 using base = SgPointerType;
24988 static constexpr char const * const name{"PointerMemberType"};
24989 static constexpr unsigned long variant{649};
24990 static constexpr bool concrete{true};
24991 using subclasses_t = mp::List<>;
24993};
24994template <> struct node_from_variant_t<649> { using type = SgPointerMemberType; };
24995
24996// Class: PointerType
24997template <> struct describe_field_t<SgPointerType,SgType*,&SgPointerType::p_base_type> {
24998 using parent = SgPointerType;
24999 using field_type = SgType*;
25000 static constexpr size_t position{0};
25001 static constexpr char const * const name{"base_type"};
25002 static constexpr char const * const typestr{"SgType*"};
25003 static constexpr bool traverse{true};
25004 static constexpr auto mbr_ptr{&SgPointerType::p_base_type};
25005 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25006 using bind = Desc<SgPointerType, SgType* SgPointerType::*, &SgPointerType::p_base_type>;
25007};
25008template <> struct describe_node_t<SgPointerType> {
25009 using node = SgPointerType;
25010 using base = SgType;
25011 static constexpr char const * const name{"PointerType"};
25012 static constexpr unsigned long variant{650};
25013 static constexpr bool concrete{true};
25016};
25017template <> struct node_from_variant_t<650> { using type = SgPointerType; };
25018
25019// Class: PowerOp
25020template <> struct describe_node_t<SgPowerOp> {
25021 using node = SgPowerOp;
25022 using base = SgBinaryOp;
25023 static constexpr char const * const name{"PowerOp"};
25024 static constexpr unsigned long variant{651};
25025 static constexpr bool concrete{true};
25026 using subclasses_t = mp::List<>;
25027 using fields_t = mp::List<>;
25028};
25029template <> struct node_from_variant_t<651> { using type = SgPowerOp; };
25030
25031// Class: Pragma
25032template <> struct describe_field_t<SgPragma,Sg_File_Info*,&SgPragma::p_startOfConstruct> {
25033 using parent = SgPragma;
25034 using field_type = Sg_File_Info*;
25035 static constexpr size_t position{0};
25036 static constexpr char const * const name{"startOfConstruct"};
25037 static constexpr char const * const typestr{"Sg_File_Info*"};
25038 static constexpr bool traverse{false};
25039 static constexpr auto mbr_ptr{&SgPragma::p_startOfConstruct};
25040 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25041 using bind = Desc<SgPragma, Sg_File_Info* SgPragma::*, &SgPragma::p_startOfConstruct>;
25042};
25043template <> struct describe_field_t<SgPragma,Sg_File_Info*,&SgPragma::p_endOfConstruct> {
25044 using parent = SgPragma;
25045 using field_type = Sg_File_Info*;
25046 static constexpr size_t position{1};
25047 static constexpr char const * const name{"endOfConstruct"};
25048 static constexpr char const * const typestr{"Sg_File_Info*"};
25049 static constexpr bool traverse{false};
25050 static constexpr auto mbr_ptr{&SgPragma::p_endOfConstruct};
25051 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25052 using bind = Desc<SgPragma, Sg_File_Info* SgPragma::*, &SgPragma::p_endOfConstruct>;
25053};
25054template <> struct describe_field_t<SgPragma,short,&SgPragma::p_printed> {
25055 using parent = SgPragma;
25056 using field_type = short;
25057 static constexpr size_t position{2};
25058 static constexpr char const * const name{"printed"};
25059 static constexpr char const * const typestr{"short"};
25060 static constexpr bool traverse{false};
25061 static constexpr auto mbr_ptr{&SgPragma::p_printed};
25062 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25063 using bind = Desc<SgPragma, short SgPragma::*, &SgPragma::p_printed>;
25064};
25065template <> struct describe_field_t<SgPragma,SgExprListExp*,&SgPragma::p_args> {
25066 using parent = SgPragma;
25067 using field_type = SgExprListExp*;
25068 static constexpr size_t position{3};
25069 static constexpr char const * const name{"args"};
25070 static constexpr char const * const typestr{"SgExprListExp*"};
25071 static constexpr bool traverse{false};
25072 static constexpr auto mbr_ptr{&SgPragma::p_args};
25073 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25074 using bind = Desc<SgPragma, SgExprListExp* SgPragma::*, &SgPragma::p_args>;
25075};
25076template <> struct describe_field_t<SgPragma,SgStatement*,&SgPragma::p_associatedStatement> {
25077 using parent = SgPragma;
25078 using field_type = SgStatement*;
25079 static constexpr size_t position{4};
25080 static constexpr char const * const name{"associatedStatement"};
25081 static constexpr char const * const typestr{"SgStatement*"};
25082 static constexpr bool traverse{false};
25083 static constexpr auto mbr_ptr{&SgPragma::p_associatedStatement};
25084 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25085 using bind = Desc<SgPragma, SgStatement* SgPragma::*, &SgPragma::p_associatedStatement>;
25086};
25087template <> struct describe_field_t<SgPragma,AstAttributeMechanism*,&SgPragma::p_attributeMechanism> {
25088 using parent = SgPragma;
25090 static constexpr size_t position{5};
25091 static constexpr char const * const name{"attributeMechanism"};
25092 static constexpr char const * const typestr{"AstAttributeMechanism*"};
25093 static constexpr bool traverse{false};
25094 static constexpr auto mbr_ptr{&SgPragma::p_attributeMechanism};
25095 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25096 using bind = Desc<SgPragma, AstAttributeMechanism* SgPragma::*, &SgPragma::p_attributeMechanism>;
25097};
25107template <> struct node_from_variant_t<652> { using type = SgPragma; };
25108
25109// Class: PragmaDeclaration
25110template <> struct describe_field_t<SgPragmaDeclaration,SgPragma*,&SgPragmaDeclaration::p_pragma> {
25112 using field_type = SgPragma*;
25113 static constexpr size_t position{0};
25114 static constexpr char const * const name{"pragma"};
25115 static constexpr char const * const typestr{"SgPragma*"};
25116 static constexpr bool traverse{true};
25117 static constexpr auto mbr_ptr{&SgPragmaDeclaration::p_pragma};
25118 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25119 using bind = Desc<SgPragmaDeclaration, SgPragma* SgPragmaDeclaration::*, &SgPragmaDeclaration::p_pragma>;
25120};
25122 using node = SgPragmaDeclaration;
25124 static constexpr char const * const name{"PragmaDeclaration"};
25125 static constexpr unsigned long variant{653};
25126 static constexpr bool concrete{true};
25127 using subclasses_t = mp::List<>;
25129};
25130template <> struct node_from_variant_t<653> { using type = SgPragmaDeclaration; };
25131
25132// Class: PrintStatement
25133template <> struct describe_field_t<SgPrintStatement,SgExpression*,&SgPrintStatement::p_format> {
25134 using parent = SgPrintStatement;
25135 using field_type = SgExpression*;
25136 static constexpr size_t position{0};
25137 static constexpr char const * const name{"format"};
25138 static constexpr char const * const typestr{"SgExpression*"};
25139 static constexpr bool traverse{true};
25140 static constexpr auto mbr_ptr{&SgPrintStatement::p_format};
25141 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25142 using bind = Desc<SgPrintStatement, SgExpression* SgPrintStatement::*, &SgPrintStatement::p_format>;
25143};
25145 using node = SgPrintStatement;
25146 using base = SgIOStatement;
25147 static constexpr char const * const name{"PrintStatement"};
25148 static constexpr unsigned long variant{654};
25149 static constexpr bool concrete{true};
25150 using subclasses_t = mp::List<>;
25152};
25153template <> struct node_from_variant_t<654> { using type = SgPrintStatement; };
25154
25155// Class: ProcedureHeaderStatement
25156template <> struct describe_field_t<SgProcedureHeaderStatement,SgProcedureHeaderStatement::subprogram_kind_enum,&SgProcedureHeaderStatement::p_subprogram_kind> {
25159 static constexpr size_t position{0};
25160 static constexpr char const * const name{"subprogram_kind"};
25161 static constexpr char const * const typestr{"SgProcedureHeaderStatement::subprogram_kind_enum"};
25162 static constexpr bool traverse{false};
25163 static constexpr auto mbr_ptr{&SgProcedureHeaderStatement::p_subprogram_kind};
25164 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25165 using bind = Desc<SgProcedureHeaderStatement, SgProcedureHeaderStatement::subprogram_kind_enum SgProcedureHeaderStatement::*, &SgProcedureHeaderStatement::p_subprogram_kind>;
25166};
25167template <> struct describe_field_t<SgProcedureHeaderStatement,SgLabelRefExp*,&SgProcedureHeaderStatement::p_end_numeric_label> {
25169 using field_type = SgLabelRefExp*;
25170 static constexpr size_t position{1};
25171 static constexpr char const * const name{"end_numeric_label"};
25172 static constexpr char const * const typestr{"SgLabelRefExp*"};
25173 static constexpr bool traverse{false};
25174 static constexpr auto mbr_ptr{&SgProcedureHeaderStatement::p_end_numeric_label};
25175 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25176 using bind = Desc<SgProcedureHeaderStatement, SgLabelRefExp* SgProcedureHeaderStatement::*, &SgProcedureHeaderStatement::p_end_numeric_label>;
25177};
25178template <> struct describe_field_t<SgProcedureHeaderStatement,SgInitializedName*,&SgProcedureHeaderStatement::p_result_name> {
25181 static constexpr size_t position{2};
25182 static constexpr char const * const name{"result_name"};
25183 static constexpr char const * const typestr{"SgInitializedName*"};
25184 static constexpr bool traverse{true};
25185 static constexpr auto mbr_ptr{&SgProcedureHeaderStatement::p_result_name};
25186 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25187 using bind = Desc<SgProcedureHeaderStatement, SgInitializedName* SgProcedureHeaderStatement::*, &SgProcedureHeaderStatement::p_result_name>;
25188};
25198template <> struct node_from_variant_t<655> { using type = SgProcedureHeaderStatement; };
25199
25200// Class: ProgramHeaderStatement
25201template <> struct describe_field_t<SgProgramHeaderStatement,bool,&SgProgramHeaderStatement::p_program_statement_explicit> {
25203 using field_type = bool;
25204 static constexpr size_t position{0};
25205 static constexpr char const * const name{"program_statement_explicit"};
25206 static constexpr char const * const typestr{"bool"};
25207 static constexpr bool traverse{false};
25208 static constexpr auto mbr_ptr{&SgProgramHeaderStatement::p_program_statement_explicit};
25209 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25210 using bind = Desc<SgProgramHeaderStatement, bool SgProgramHeaderStatement::*, &SgProgramHeaderStatement::p_program_statement_explicit>;
25211};
25212template <> struct describe_field_t<SgProgramHeaderStatement,SgLabelRefExp*,&SgProgramHeaderStatement::p_end_numeric_label> {
25214 using field_type = SgLabelRefExp*;
25215 static constexpr size_t position{1};
25216 static constexpr char const * const name{"end_numeric_label"};
25217 static constexpr char const * const typestr{"SgLabelRefExp*"};
25218 static constexpr bool traverse{false};
25219 static constexpr auto mbr_ptr{&SgProgramHeaderStatement::p_end_numeric_label};
25220 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25221 using bind = Desc<SgProgramHeaderStatement, SgLabelRefExp* SgProgramHeaderStatement::*, &SgProgramHeaderStatement::p_end_numeric_label>;
25222};
25226 static constexpr char const * const name{"ProgramHeaderStatement"};
25227 static constexpr unsigned long variant{656};
25228 static constexpr bool concrete{true};
25229 using subclasses_t = mp::List<>;
25231};
25232template <> struct node_from_variant_t<656> { using type = SgProgramHeaderStatement; };
25233
25234// Class: Project
25235template <> struct describe_field_t<SgProject,SgFileList*,&SgProject::p_fileList_ptr> {
25236 using parent = SgProject;
25237 using field_type = SgFileList*;
25238 static constexpr size_t position{0};
25239 static constexpr char const * const name{"fileList_ptr"};
25240 static constexpr char const * const typestr{"SgFileList*"};
25241 static constexpr bool traverse{true};
25242 static constexpr auto mbr_ptr{&SgProject::p_fileList_ptr};
25243 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25244 using bind = Desc<SgProject, SgFileList* SgProject::*, &SgProject::p_fileList_ptr>;
25245};
25247 using parent = SgProject;
25248 using field_type = SgStringList;
25249 static constexpr size_t position{1};
25250 static constexpr char const * const name{"originalCommandLineArgumentList"};
25251 static constexpr char const * const typestr{"SgStringList"};
25252 static constexpr bool traverse{false};
25253 static constexpr auto mbr_ptr{&SgProject::p_originalCommandLineArgumentList};
25254 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25255 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_originalCommandLineArgumentList>;
25256};
25258 using parent = SgProject;
25259 using field_type = int;
25260 static constexpr size_t position{2};
25261 static constexpr char const * const name{"frontendErrorCode"};
25262 static constexpr char const * const typestr{"int"};
25263 static constexpr bool traverse{false};
25264 static constexpr auto mbr_ptr{&SgProject::p_frontendErrorCode};
25265 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25266 using bind = Desc<SgProject, int SgProject::*, &SgProject::p_frontendErrorCode>;
25267};
25268template <> struct describe_field_t<SgProject,int,&SgProject::p_javacErrorCode> {
25269 using parent = SgProject;
25270 using field_type = int;
25271 static constexpr size_t position{3};
25272 static constexpr char const * const name{"javacErrorCode"};
25273 static constexpr char const * const typestr{"int"};
25274 static constexpr bool traverse{false};
25275 static constexpr auto mbr_ptr{&SgProject::p_javacErrorCode};
25276 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25277 using bind = Desc<SgProject, int SgProject::*, &SgProject::p_javacErrorCode>;
25278};
25279template <> struct describe_field_t<SgProject,int,&SgProject::p_ecjErrorCode> {
25280 using parent = SgProject;
25281 using field_type = int;
25282 static constexpr size_t position{4};
25283 static constexpr char const * const name{"ecjErrorCode"};
25284 static constexpr char const * const typestr{"int"};
25285 static constexpr bool traverse{false};
25286 static constexpr auto mbr_ptr{&SgProject::p_ecjErrorCode};
25287 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25288 using bind = Desc<SgProject, int SgProject::*, &SgProject::p_ecjErrorCode>;
25289};
25290template <> struct describe_field_t<SgProject,int,&SgProject::p_midendErrorCode> {
25291 using parent = SgProject;
25292 using field_type = int;
25293 static constexpr size_t position{5};
25294 static constexpr char const * const name{"midendErrorCode"};
25295 static constexpr char const * const typestr{"int"};
25296 static constexpr bool traverse{false};
25297 static constexpr auto mbr_ptr{&SgProject::p_midendErrorCode};
25298 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25299 using bind = Desc<SgProject, int SgProject::*, &SgProject::p_midendErrorCode>;
25300};
25302 using parent = SgProject;
25303 using field_type = int;
25304 static constexpr size_t position{6};
25305 static constexpr char const * const name{"backendErrorCode"};
25306 static constexpr char const * const typestr{"int"};
25307 static constexpr bool traverse{false};
25308 static constexpr auto mbr_ptr{&SgProject::p_backendErrorCode};
25309 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25310 using bind = Desc<SgProject, int SgProject::*, &SgProject::p_backendErrorCode>;
25311};
25312template <> struct describe_field_t<SgProject,bool,&SgProject::p_keep_going> {
25313 using parent = SgProject;
25314 using field_type = bool;
25315 static constexpr size_t position{7};
25316 static constexpr char const * const name{"keep_going"};
25317 static constexpr char const * const typestr{"bool"};
25318 static constexpr bool traverse{false};
25319 static constexpr auto mbr_ptr{&SgProject::p_keep_going};
25320 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25321 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_keep_going>;
25322};
25323template <> struct describe_field_t<SgProject,bool,&SgProject::p_unparser__clobber_input_file> {
25324 using parent = SgProject;
25325 using field_type = bool;
25326 static constexpr size_t position{8};
25327 static constexpr char const * const name{"unparser__clobber_input_file"};
25328 static constexpr char const * const typestr{"bool"};
25329 static constexpr bool traverse{false};
25330 static constexpr auto mbr_ptr{&SgProject::p_unparser__clobber_input_file};
25331 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25332 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_unparser__clobber_input_file>;
25333};
25335 using parent = SgProject;
25336 using field_type = std::string;
25337 static constexpr size_t position{9};
25338 static constexpr char const * const name{"outputFileName"};
25339 static constexpr char const * const typestr{"std::string"};
25340 static constexpr bool traverse{false};
25341 static constexpr auto mbr_ptr{&SgProject::p_outputFileName};
25342 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25343 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_outputFileName>;
25344};
25346 using parent = SgProject;
25347 using field_type = SgStringList;
25348 static constexpr size_t position{10};
25349 static constexpr char const * const name{"sourceFileNameList"};
25350 static constexpr char const * const typestr{"SgStringList"};
25351 static constexpr bool traverse{false};
25352 static constexpr auto mbr_ptr{&SgProject::p_sourceFileNameList};
25353 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25354 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_sourceFileNameList>;
25355};
25357 using parent = SgProject;
25358 using field_type = SgStringList;
25359 static constexpr size_t position{11};
25360 static constexpr char const * const name{"objectFileNameList"};
25361 static constexpr char const * const typestr{"SgStringList"};
25362 static constexpr bool traverse{false};
25363 static constexpr auto mbr_ptr{&SgProject::p_objectFileNameList};
25364 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25365 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_objectFileNameList>;
25366};
25368 using parent = SgProject;
25369 using field_type = SgStringList;
25370 static constexpr size_t position{12};
25371 static constexpr char const * const name{"libraryFileList"};
25372 static constexpr char const * const typestr{"SgStringList"};
25373 static constexpr bool traverse{false};
25374 static constexpr auto mbr_ptr{&SgProject::p_libraryFileList};
25375 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25376 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_libraryFileList>;
25377};
25379 using parent = SgProject;
25380 using field_type = SgStringList;
25381 static constexpr size_t position{13};
25382 static constexpr char const * const name{"librarySpecifierList"};
25383 static constexpr char const * const typestr{"SgStringList"};
25384 static constexpr bool traverse{false};
25385 static constexpr auto mbr_ptr{&SgProject::p_librarySpecifierList};
25386 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25387 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_librarySpecifierList>;
25388};
25390 using parent = SgProject;
25391 using field_type = SgStringList;
25392 static constexpr size_t position{14};
25393 static constexpr char const * const name{"libraryDirectorySpecifierList"};
25394 static constexpr char const * const typestr{"SgStringList"};
25395 static constexpr bool traverse{false};
25396 static constexpr auto mbr_ptr{&SgProject::p_libraryDirectorySpecifierList};
25397 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25398 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_libraryDirectorySpecifierList>;
25399};
25401 using parent = SgProject;
25402 using field_type = SgStringList;
25403 static constexpr size_t position{15};
25404 static constexpr char const * const name{"includeDirectorySpecifierList"};
25405 static constexpr char const * const typestr{"SgStringList"};
25406 static constexpr bool traverse{false};
25407 static constexpr auto mbr_ptr{&SgProject::p_includeDirectorySpecifierList};
25408 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25409 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_includeDirectorySpecifierList>;
25410};
25411template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_macroSpecifierList> {
25412 using parent = SgProject;
25413 using field_type = SgStringList;
25414 static constexpr size_t position{16};
25415 static constexpr char const * const name{"macroSpecifierList"};
25416 static constexpr char const * const typestr{"SgStringList"};
25417 static constexpr bool traverse{false};
25418 static constexpr auto mbr_ptr{&SgProject::p_macroSpecifierList};
25419 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25420 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_macroSpecifierList>;
25421};
25422template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_preincludeFileList> {
25423 using parent = SgProject;
25424 using field_type = SgStringList;
25425 static constexpr size_t position{17};
25426 static constexpr char const * const name{"preincludeFileList"};
25427 static constexpr char const * const typestr{"SgStringList"};
25428 static constexpr bool traverse{false};
25429 static constexpr auto mbr_ptr{&SgProject::p_preincludeFileList};
25430 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25431 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_preincludeFileList>;
25432};
25433template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_preincludeDirectoryList> {
25434 using parent = SgProject;
25435 using field_type = SgStringList;
25436 static constexpr size_t position{18};
25437 static constexpr char const * const name{"preincludeDirectoryList"};
25438 static constexpr char const * const typestr{"SgStringList"};
25439 static constexpr bool traverse{false};
25440 static constexpr auto mbr_ptr{&SgProject::p_preincludeDirectoryList};
25441 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25442 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_preincludeDirectoryList>;
25443};
25445 using parent = SgProject;
25446 using field_type = bool;
25447 static constexpr size_t position{19};
25448 static constexpr char const * const name{"compileOnly"};
25449 static constexpr char const * const typestr{"bool"};
25450 static constexpr bool traverse{false};
25451 static constexpr auto mbr_ptr{&SgProject::p_compileOnly};
25452 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25453 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_compileOnly>;
25454};
25455template <> struct describe_field_t<SgProject,bool,&SgProject::p_wave> {
25456 using parent = SgProject;
25457 using field_type = bool;
25458 static constexpr size_t position{20};
25459 static constexpr char const * const name{"wave"};
25460 static constexpr char const * const typestr{"bool"};
25461 static constexpr bool traverse{false};
25462 static constexpr auto mbr_ptr{&SgProject::p_wave};
25463 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25464 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_wave>;
25465};
25467 using parent = SgProject;
25468 using field_type = bool;
25469 static constexpr size_t position{21};
25470 static constexpr char const * const name{"prelink"};
25471 static constexpr char const * const typestr{"bool"};
25472 static constexpr bool traverse{false};
25473 static constexpr auto mbr_ptr{&SgProject::p_prelink};
25474 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25475 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_prelink>;
25476};
25477template <> struct describe_field_t<SgProject,SgProject::template_instantiation_enum,&SgProject::p_template_instantiation_mode> {
25478 using parent = SgProject;
25480 static constexpr size_t position{22};
25481 static constexpr char const * const name{"template_instantiation_mode"};
25482 static constexpr char const * const typestr{"SgProject::template_instantiation_enum"};
25483 static constexpr bool traverse{false};
25484 static constexpr auto mbr_ptr{&SgProject::p_template_instantiation_mode};
25485 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25486 using bind = Desc<SgProject, SgProject::template_instantiation_enum SgProject::*, &SgProject::p_template_instantiation_mode>;
25487};
25488template <> struct describe_field_t<SgProject,bool,&SgProject::p_ast_merge> {
25489 using parent = SgProject;
25490 using field_type = bool;
25491 static constexpr size_t position{23};
25492 static constexpr char const * const name{"ast_merge"};
25493 static constexpr char const * const typestr{"bool"};
25494 static constexpr bool traverse{false};
25495 static constexpr auto mbr_ptr{&SgProject::p_ast_merge};
25496 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25497 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_ast_merge>;
25498};
25499template <> struct describe_field_t<SgProject,std::string,&SgProject::p_projectSpecificDatabaseFile> {
25500 using parent = SgProject;
25501 using field_type = std::string;
25502 static constexpr size_t position{24};
25503 static constexpr char const * const name{"projectSpecificDatabaseFile"};
25504 static constexpr char const * const typestr{"std::string"};
25505 static constexpr bool traverse{false};
25506 static constexpr auto mbr_ptr{&SgProject::p_projectSpecificDatabaseFile};
25507 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25508 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_projectSpecificDatabaseFile>;
25509};
25510template <> struct describe_field_t<SgProject,bool,&SgProject::p_C_PreprocessorOnly> {
25511 using parent = SgProject;
25512 using field_type = bool;
25513 static constexpr size_t position{25};
25514 static constexpr char const * const name{"C_PreprocessorOnly"};
25515 static constexpr char const * const typestr{"bool"};
25516 static constexpr bool traverse{false};
25517 static constexpr auto mbr_ptr{&SgProject::p_C_PreprocessorOnly};
25518 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25519 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_C_PreprocessorOnly>;
25520};
25521template <> struct describe_field_t<SgProject,AstAttributeMechanism*,&SgProject::p_attributeMechanism> {
25522 using parent = SgProject;
25524 static constexpr size_t position{26};
25525 static constexpr char const * const name{"attributeMechanism"};
25526 static constexpr char const * const typestr{"AstAttributeMechanism*"};
25527 static constexpr bool traverse{false};
25528 static constexpr auto mbr_ptr{&SgProject::p_attributeMechanism};
25529 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25530 using bind = Desc<SgProject, AstAttributeMechanism* SgProject::*, &SgProject::p_attributeMechanism>;
25531};
25532template <> struct describe_field_t<SgProject,std::string,&SgProject::p_compilationPerformanceFile> {
25533 using parent = SgProject;
25534 using field_type = std::string;
25535 static constexpr size_t position{27};
25536 static constexpr char const * const name{"compilationPerformanceFile"};
25537 static constexpr char const * const typestr{"std::string"};
25538 static constexpr bool traverse{false};
25539 static constexpr auto mbr_ptr{&SgProject::p_compilationPerformanceFile};
25540 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25541 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_compilationPerformanceFile>;
25542};
25543template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_includePathList> {
25544 using parent = SgProject;
25545 using field_type = SgStringList;
25546 static constexpr size_t position{28};
25547 static constexpr char const * const name{"includePathList"};
25548 static constexpr char const * const typestr{"SgStringList"};
25549 static constexpr bool traverse{false};
25550 static constexpr auto mbr_ptr{&SgProject::p_includePathList};
25551 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25552 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_includePathList>;
25553};
25554template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_excludePathList> {
25555 using parent = SgProject;
25556 using field_type = SgStringList;
25557 static constexpr size_t position{29};
25558 static constexpr char const * const name{"excludePathList"};
25559 static constexpr char const * const typestr{"SgStringList"};
25560 static constexpr bool traverse{false};
25561 static constexpr auto mbr_ptr{&SgProject::p_excludePathList};
25562 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25563 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_excludePathList>;
25564};
25565template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_includeFileList> {
25566 using parent = SgProject;
25567 using field_type = SgStringList;
25568 static constexpr size_t position{30};
25569 static constexpr char const * const name{"includeFileList"};
25570 static constexpr char const * const typestr{"SgStringList"};
25571 static constexpr bool traverse{false};
25572 static constexpr auto mbr_ptr{&SgProject::p_includeFileList};
25573 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25574 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_includeFileList>;
25575};
25576template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_excludeFileList> {
25577 using parent = SgProject;
25578 using field_type = SgStringList;
25579 static constexpr size_t position{31};
25580 static constexpr char const * const name{"excludeFileList"};
25581 static constexpr char const * const typestr{"SgStringList"};
25582 static constexpr bool traverse{false};
25583 static constexpr auto mbr_ptr{&SgProject::p_excludeFileList};
25584 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25585 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_excludeFileList>;
25586};
25587template <> struct describe_field_t<SgProject,bool,&SgProject::p_binary_only> {
25588 using parent = SgProject;
25589 using field_type = bool;
25590 static constexpr size_t position{32};
25591 static constexpr char const * const name{"binary_only"};
25592 static constexpr char const * const typestr{"bool"};
25593 static constexpr bool traverse{false};
25594 static constexpr auto mbr_ptr{&SgProject::p_binary_only};
25595 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25596 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_binary_only>;
25597};
25598template <> struct describe_field_t<SgProject,std::string,&SgProject::p_dataBaseFilename> {
25599 using parent = SgProject;
25600 using field_type = std::string;
25601 static constexpr size_t position{33};
25602 static constexpr char const * const name{"dataBaseFilename"};
25603 static constexpr char const * const typestr{"std::string"};
25604 static constexpr bool traverse{false};
25605 static constexpr auto mbr_ptr{&SgProject::p_dataBaseFilename};
25606 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25607 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_dataBaseFilename>;
25608};
25609template <> struct describe_field_t<SgProject,SgDirectoryList*,&SgProject::p_directoryList> {
25610 using parent = SgProject;
25611 using field_type = SgDirectoryList*;
25612 static constexpr size_t position{34};
25613 static constexpr char const * const name{"directoryList"};
25614 static constexpr char const * const typestr{"SgDirectoryList*"};
25615 static constexpr bool traverse{false};
25616 static constexpr auto mbr_ptr{&SgProject::p_directoryList};
25617 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25618 using bind = Desc<SgProject, SgDirectoryList* SgProject::*, &SgProject::p_directoryList>;
25619};
25620template <> struct describe_field_t<SgProject,bool,&SgProject::p_C_only> {
25621 using parent = SgProject;
25622 using field_type = bool;
25623 static constexpr size_t position{35};
25624 static constexpr char const * const name{"C_only"};
25625 static constexpr char const * const typestr{"bool"};
25626 static constexpr bool traverse{false};
25627 static constexpr auto mbr_ptr{&SgProject::p_C_only};
25628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25629 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_C_only>;
25630};
25631template <> struct describe_field_t<SgProject,bool,&SgProject::p_Cxx_only> {
25632 using parent = SgProject;
25633 using field_type = bool;
25634 static constexpr size_t position{36};
25635 static constexpr char const * const name{"Cxx_only"};
25636 static constexpr char const * const typestr{"bool"};
25637 static constexpr bool traverse{false};
25638 static constexpr auto mbr_ptr{&SgProject::p_Cxx_only};
25639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25640 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Cxx_only>;
25641};
25642template <> struct describe_field_t<SgProject,bool,&SgProject::p_C11_only> {
25643 using parent = SgProject;
25644 using field_type = bool;
25645 static constexpr size_t position{37};
25646 static constexpr char const * const name{"C11_only"};
25647 static constexpr char const * const typestr{"bool"};
25648 static constexpr bool traverse{false};
25649 static constexpr auto mbr_ptr{&SgProject::p_C11_only};
25650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25651 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_C11_only>;
25652};
25653template <> struct describe_field_t<SgProject,bool,&SgProject::p_Cxx0x_only> {
25654 using parent = SgProject;
25655 using field_type = bool;
25656 static constexpr size_t position{38};
25657 static constexpr char const * const name{"Cxx0x_only"};
25658 static constexpr char const * const typestr{"bool"};
25659 static constexpr bool traverse{false};
25660 static constexpr auto mbr_ptr{&SgProject::p_Cxx0x_only};
25661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25662 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Cxx0x_only>;
25663};
25664template <> struct describe_field_t<SgProject,bool,&SgProject::p_Cxx11_only> {
25665 using parent = SgProject;
25666 using field_type = bool;
25667 static constexpr size_t position{39};
25668 static constexpr char const * const name{"Cxx11_only"};
25669 static constexpr char const * const typestr{"bool"};
25670 static constexpr bool traverse{false};
25671 static constexpr auto mbr_ptr{&SgProject::p_Cxx11_only};
25672 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25673 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Cxx11_only>;
25674};
25675template <> struct describe_field_t<SgProject,bool,&SgProject::p_C14_only> {
25676 using parent = SgProject;
25677 using field_type = bool;
25678 static constexpr size_t position{40};
25679 static constexpr char const * const name{"C14_only"};
25680 static constexpr char const * const typestr{"bool"};
25681 static constexpr bool traverse{false};
25682 static constexpr auto mbr_ptr{&SgProject::p_C14_only};
25683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25684 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_C14_only>;
25685};
25686template <> struct describe_field_t<SgProject,bool,&SgProject::p_Cxx14_only> {
25687 using parent = SgProject;
25688 using field_type = bool;
25689 static constexpr size_t position{41};
25690 static constexpr char const * const name{"Cxx14_only"};
25691 static constexpr char const * const typestr{"bool"};
25692 static constexpr bool traverse{false};
25693 static constexpr auto mbr_ptr{&SgProject::p_Cxx14_only};
25694 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25695 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Cxx14_only>;
25696};
25697template <> struct describe_field_t<SgProject,bool,&SgProject::p_Fortran_only> {
25698 using parent = SgProject;
25699 using field_type = bool;
25700 static constexpr size_t position{42};
25701 static constexpr char const * const name{"Fortran_only"};
25702 static constexpr char const * const typestr{"bool"};
25703 static constexpr bool traverse{false};
25704 static constexpr auto mbr_ptr{&SgProject::p_Fortran_only};
25705 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25706 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Fortran_only>;
25707};
25708template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Fortran_ofp_jvm_options> {
25709 using parent = SgProject;
25710 using field_type = std::list<std::string>;
25711 static constexpr size_t position{43};
25712 static constexpr char const * const name{"Fortran_ofp_jvm_options"};
25713 static constexpr char const * const typestr{"std::list<std::string>"};
25714 static constexpr bool traverse{false};
25715 static constexpr auto mbr_ptr{&SgProject::p_Fortran_ofp_jvm_options};
25716 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25717 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_Fortran_ofp_jvm_options>;
25718};
25719template <> struct describe_field_t<SgProject,bool,&SgProject::p_Java_only> {
25720 using parent = SgProject;
25721 using field_type = bool;
25722 static constexpr size_t position{44};
25723 static constexpr char const * const name{"Java_only"};
25724 static constexpr char const * const typestr{"bool"};
25725 static constexpr bool traverse{false};
25726 static constexpr auto mbr_ptr{&SgProject::p_Java_only};
25727 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25728 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Java_only>;
25729};
25730template <> struct describe_field_t<SgProject,bool,&SgProject::p_Jvm_only> {
25731 using parent = SgProject;
25732 using field_type = bool;
25733 static constexpr size_t position{45};
25734 static constexpr char const * const name{"Jvm_only"};
25735 static constexpr char const * const typestr{"bool"};
25736 static constexpr bool traverse{false};
25737 static constexpr auto mbr_ptr{&SgProject::p_Jvm_only};
25738 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25739 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Jvm_only>;
25740};
25741template <> struct describe_field_t<SgProject,bool,&SgProject::p_Jovial_only> {
25742 using parent = SgProject;
25743 using field_type = bool;
25744 static constexpr size_t position{46};
25745 static constexpr char const * const name{"Jovial_only"};
25746 static constexpr char const * const typestr{"bool"};
25747 static constexpr bool traverse{false};
25748 static constexpr auto mbr_ptr{&SgProject::p_Jovial_only};
25749 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25750 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Jovial_only>;
25751};
25752template <> struct describe_field_t<SgProject,bool,&SgProject::p_Ada_only> {
25753 using parent = SgProject;
25754 using field_type = bool;
25755 static constexpr size_t position{47};
25756 static constexpr char const * const name{"Ada_only"};
25757 static constexpr char const * const typestr{"bool"};
25758 static constexpr bool traverse{false};
25759 static constexpr auto mbr_ptr{&SgProject::p_Ada_only};
25760 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25761 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Ada_only>;
25762};
25764 using parent = SgProject;
25765 using field_type = bool;
25766 static constexpr size_t position{48};
25767 static constexpr char const * const name{"openmp_linking"};
25768 static constexpr char const * const typestr{"bool"};
25769 static constexpr bool traverse{false};
25770 static constexpr auto mbr_ptr{&SgProject::p_openmp_linking};
25771 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25772 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_openmp_linking>;
25773};
25774template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_ecj_jvm_options> {
25775 using parent = SgProject;
25776 using field_type = std::list<std::string>;
25777 static constexpr size_t position{49};
25778 static constexpr char const * const name{"Java_ecj_jvm_options"};
25779 static constexpr char const * const typestr{"std::list<std::string>"};
25780 static constexpr bool traverse{false};
25781 static constexpr auto mbr_ptr{&SgProject::p_Java_ecj_jvm_options};
25782 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25783 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_Java_ecj_jvm_options>;
25784};
25785template <> struct describe_field_t<SgProject,bool,&SgProject::p_Java_batch_mode> {
25786 using parent = SgProject;
25787 using field_type = bool;
25788 static constexpr size_t position{50};
25789 static constexpr char const * const name{"Java_batch_mode"};
25790 static constexpr char const * const typestr{"bool"};
25791 static constexpr bool traverse{false};
25792 static constexpr auto mbr_ptr{&SgProject::p_Java_batch_mode};
25793 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25794 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Java_batch_mode>;
25795};
25796template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_classpath> {
25797 using parent = SgProject;
25798 using field_type = std::list<std::string>;
25799 static constexpr size_t position{51};
25800 static constexpr char const * const name{"Java_classpath"};
25801 static constexpr char const * const typestr{"std::list<std::string>"};
25802 static constexpr bool traverse{false};
25803 static constexpr auto mbr_ptr{&SgProject::p_Java_classpath};
25804 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25805 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_Java_classpath>;
25806};
25807template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_sourcepath> {
25808 using parent = SgProject;
25809 using field_type = std::list<std::string>;
25810 static constexpr size_t position{52};
25811 static constexpr char const * const name{"Java_sourcepath"};
25812 static constexpr char const * const typestr{"std::list<std::string>"};
25813 static constexpr bool traverse{false};
25814 static constexpr auto mbr_ptr{&SgProject::p_Java_sourcepath};
25815 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25816 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_Java_sourcepath>;
25817};
25818template <> struct describe_field_t<SgProject,std::string,&SgProject::p_Java_destdir> {
25819 using parent = SgProject;
25820 using field_type = std::string;
25821 static constexpr size_t position{53};
25822 static constexpr char const * const name{"Java_destdir"};
25823 static constexpr char const * const typestr{"std::string"};
25824 static constexpr bool traverse{false};
25825 static constexpr auto mbr_ptr{&SgProject::p_Java_destdir};
25826 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25827 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_Java_destdir>;
25828};
25829template <> struct describe_field_t<SgProject,std::string,&SgProject::p_Java_source_destdir> {
25830 using parent = SgProject;
25831 using field_type = std::string;
25832 static constexpr size_t position{54};
25833 static constexpr char const * const name{"Java_source_destdir"};
25834 static constexpr char const * const typestr{"std::string"};
25835 static constexpr bool traverse{false};
25836 static constexpr auto mbr_ptr{&SgProject::p_Java_source_destdir};
25837 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25838 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_Java_source_destdir>;
25839};
25840template <> struct describe_field_t<SgProject,std::string,&SgProject::p_Java_s> {
25841 using parent = SgProject;
25842 using field_type = std::string;
25843 static constexpr size_t position{55};
25844 static constexpr char const * const name{"Java_s"};
25845 static constexpr char const * const typestr{"std::string"};
25846 static constexpr bool traverse{false};
25847 static constexpr auto mbr_ptr{&SgProject::p_Java_s};
25848 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25849 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_Java_s>;
25850};
25851template <> struct describe_field_t<SgProject,std::string,&SgProject::p_Java_source> {
25852 using parent = SgProject;
25853 using field_type = std::string;
25854 static constexpr size_t position{56};
25855 static constexpr char const * const name{"Java_source"};
25856 static constexpr char const * const typestr{"std::string"};
25857 static constexpr bool traverse{false};
25858 static constexpr auto mbr_ptr{&SgProject::p_Java_source};
25859 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25860 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_Java_source>;
25861};
25862template <> struct describe_field_t<SgProject,std::string,&SgProject::p_Java_target> {
25863 using parent = SgProject;
25864 using field_type = std::string;
25865 static constexpr size_t position{57};
25866 static constexpr char const * const name{"Java_target"};
25867 static constexpr char const * const typestr{"std::string"};
25868 static constexpr bool traverse{false};
25869 static constexpr auto mbr_ptr{&SgProject::p_Java_target};
25870 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25871 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_Java_target>;
25872};
25873template <> struct describe_field_t<SgProject,std::string,&SgProject::p_Java_encoding> {
25874 using parent = SgProject;
25875 using field_type = std::string;
25876 static constexpr size_t position{58};
25877 static constexpr char const * const name{"Java_encoding"};
25878 static constexpr char const * const typestr{"std::string"};
25879 static constexpr bool traverse{false};
25880 static constexpr auto mbr_ptr{&SgProject::p_Java_encoding};
25881 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25882 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_Java_encoding>;
25883};
25884template <> struct describe_field_t<SgProject,std::string,&SgProject::p_Java_g> {
25885 using parent = SgProject;
25886 using field_type = std::string;
25887 static constexpr size_t position{59};
25888 static constexpr char const * const name{"Java_g"};
25889 static constexpr char const * const typestr{"std::string"};
25890 static constexpr bool traverse{false};
25891 static constexpr auto mbr_ptr{&SgProject::p_Java_g};
25892 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25893 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_Java_g>;
25894};
25895template <> struct describe_field_t<SgProject,bool,&SgProject::p_Java_nowarn> {
25896 using parent = SgProject;
25897 using field_type = bool;
25898 static constexpr size_t position{60};
25899 static constexpr char const * const name{"Java_nowarn"};
25900 static constexpr char const * const typestr{"bool"};
25901 static constexpr bool traverse{false};
25902 static constexpr auto mbr_ptr{&SgProject::p_Java_nowarn};
25903 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25904 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Java_nowarn>;
25905};
25906template <> struct describe_field_t<SgProject,bool,&SgProject::p_Java_verbose> {
25907 using parent = SgProject;
25908 using field_type = bool;
25909 static constexpr size_t position{61};
25910 static constexpr char const * const name{"Java_verbose"};
25911 static constexpr char const * const typestr{"bool"};
25912 static constexpr bool traverse{false};
25913 static constexpr auto mbr_ptr{&SgProject::p_Java_verbose};
25914 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25915 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Java_verbose>;
25916};
25917template <> struct describe_field_t<SgProject,bool,&SgProject::p_Java_deprecation> {
25918 using parent = SgProject;
25919 using field_type = bool;
25920 static constexpr size_t position{62};
25921 static constexpr char const * const name{"Java_deprecation"};
25922 static constexpr char const * const typestr{"bool"};
25923 static constexpr bool traverse{false};
25924 static constexpr auto mbr_ptr{&SgProject::p_Java_deprecation};
25925 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25926 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_Java_deprecation>;
25927};
25928template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_bootclasspath> {
25929 using parent = SgProject;
25930 using field_type = std::list<std::string>;
25931 static constexpr size_t position{63};
25932 static constexpr char const * const name{"Java_bootclasspath"};
25933 static constexpr char const * const typestr{"std::list<std::string>"};
25934 static constexpr bool traverse{false};
25935 static constexpr auto mbr_ptr{&SgProject::p_Java_bootclasspath};
25936 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25937 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_Java_bootclasspath>;
25938};
25939template <> struct describe_field_t<SgProject,bool,&SgProject::p_addCppDirectivesToAST> {
25940 using parent = SgProject;
25941 using field_type = bool;
25942 static constexpr size_t position{64};
25943 static constexpr char const * const name{"addCppDirectivesToAST"};
25944 static constexpr char const * const typestr{"bool"};
25945 static constexpr bool traverse{false};
25946 static constexpr auto mbr_ptr{&SgProject::p_addCppDirectivesToAST};
25947 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25948 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_addCppDirectivesToAST>;
25949};
25950template <> struct describe_field_t<SgProject,std::map<std::string, std::set<PreprocessingInfo*> >,&SgProject::p_includingPreprocessingInfosMap> {
25951 using parent = SgProject;
25952 using field_type = std::map<std::string, std::set<PreprocessingInfo*> >;
25953 static constexpr size_t position{65};
25954 static constexpr char const * const name{"includingPreprocessingInfosMap"};
25955 static constexpr char const * const typestr{"std::map<std::string, std::set<PreprocessingInfo*> >"};
25956 static constexpr bool traverse{false};
25957 static constexpr auto mbr_ptr{&SgProject::p_includingPreprocessingInfosMap};
25958 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25959 using bind = Desc<SgProject, std::map<std::string, std::set<PreprocessingInfo*> > SgProject::*, &SgProject::p_includingPreprocessingInfosMap>;
25960};
25961template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_quotedIncludesSearchPaths> {
25962 using parent = SgProject;
25963 using field_type = std::list<std::string>;
25964 static constexpr size_t position{66};
25965 static constexpr char const * const name{"quotedIncludesSearchPaths"};
25966 static constexpr char const * const typestr{"std::list<std::string>"};
25967 static constexpr bool traverse{false};
25968 static constexpr auto mbr_ptr{&SgProject::p_quotedIncludesSearchPaths};
25969 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25970 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_quotedIncludesSearchPaths>;
25971};
25972template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_bracketedIncludesSearchPaths> {
25973 using parent = SgProject;
25974 using field_type = std::list<std::string>;
25975 static constexpr size_t position{67};
25976 static constexpr char const * const name{"bracketedIncludesSearchPaths"};
25977 static constexpr char const * const typestr{"std::list<std::string>"};
25978 static constexpr bool traverse{false};
25979 static constexpr auto mbr_ptr{&SgProject::p_bracketedIncludesSearchPaths};
25980 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25981 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_bracketedIncludesSearchPaths>;
25982};
25983template <> struct describe_field_t<SgProject,std::string,&SgProject::p_unparseHeaderFilesRootFolder> {
25984 using parent = SgProject;
25985 using field_type = std::string;
25986 static constexpr size_t position{68};
25987 static constexpr char const * const name{"unparseHeaderFilesRootFolder"};
25988 static constexpr char const * const typestr{"std::string"};
25989 static constexpr bool traverse{false};
25990 static constexpr auto mbr_ptr{&SgProject::p_unparseHeaderFilesRootFolder};
25991 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
25992 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_unparseHeaderFilesRootFolder>;
25993};
25994template <> struct describe_field_t<SgProject,bool,&SgProject::p_frontendConstantFolding> {
25995 using parent = SgProject;
25996 using field_type = bool;
25997 static constexpr size_t position{69};
25998 static constexpr char const * const name{"frontendConstantFolding"};
25999 static constexpr char const * const typestr{"bool"};
26000 static constexpr bool traverse{false};
26001 static constexpr auto mbr_ptr{&SgProject::p_frontendConstantFolding};
26002 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26003 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_frontendConstantFolding>;
26004};
26005template <> struct describe_field_t<SgProject,SgGlobal*,&SgProject::p_globalScopeAcrossFiles> {
26006 using parent = SgProject;
26007 using field_type = SgGlobal*;
26008 static constexpr size_t position{70};
26009 static constexpr char const * const name{"globalScopeAcrossFiles"};
26010 static constexpr char const * const typestr{"SgGlobal*"};
26011 static constexpr bool traverse{false};
26012 static constexpr auto mbr_ptr{&SgProject::p_globalScopeAcrossFiles};
26013 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26014 using bind = Desc<SgProject, SgGlobal* SgProject::*, &SgProject::p_globalScopeAcrossFiles>;
26015};
26016template <> struct describe_field_t<SgProject,bool,&SgProject::p_unparse_in_same_directory_as_input_file> {
26017 using parent = SgProject;
26018 using field_type = bool;
26019 static constexpr size_t position{71};
26020 static constexpr char const * const name{"unparse_in_same_directory_as_input_file"};
26021 static constexpr char const * const typestr{"bool"};
26022 static constexpr bool traverse{false};
26023 static constexpr auto mbr_ptr{&SgProject::p_unparse_in_same_directory_as_input_file};
26024 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26025 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_unparse_in_same_directory_as_input_file>;
26026};
26027template <> struct describe_field_t<SgProject,bool,&SgProject::p_stop_after_compilation_do_not_assemble_file> {
26028 using parent = SgProject;
26029 using field_type = bool;
26030 static constexpr size_t position{72};
26031 static constexpr char const * const name{"stop_after_compilation_do_not_assemble_file"};
26032 static constexpr char const * const typestr{"bool"};
26033 static constexpr bool traverse{false};
26034 static constexpr auto mbr_ptr{&SgProject::p_stop_after_compilation_do_not_assemble_file};
26035 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26036 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_stop_after_compilation_do_not_assemble_file>;
26037};
26038template <> struct describe_field_t<SgProject,std::string,&SgProject::p_gnuOptionForUndefinedSymbol> {
26039 using parent = SgProject;
26040 using field_type = std::string;
26041 static constexpr size_t position{73};
26042 static constexpr char const * const name{"gnuOptionForUndefinedSymbol"};
26043 static constexpr char const * const typestr{"std::string"};
26044 static constexpr bool traverse{false};
26045 static constexpr auto mbr_ptr{&SgProject::p_gnuOptionForUndefinedSymbol};
26046 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26047 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_gnuOptionForUndefinedSymbol>;
26048};
26049template <> struct describe_field_t<SgProject,bool,&SgProject::p_mode_32_bit> {
26050 using parent = SgProject;
26051 using field_type = bool;
26052 static constexpr size_t position{74};
26053 static constexpr char const * const name{"mode_32_bit"};
26054 static constexpr char const * const typestr{"bool"};
26055 static constexpr bool traverse{false};
26056 static constexpr auto mbr_ptr{&SgProject::p_mode_32_bit};
26057 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26058 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_mode_32_bit>;
26059};
26060template <> struct describe_field_t<SgProject,bool,&SgProject::p_noclobber_output_file> {
26061 using parent = SgProject;
26062 using field_type = bool;
26063 static constexpr size_t position{75};
26064 static constexpr char const * const name{"noclobber_output_file"};
26065 static constexpr char const * const typestr{"bool"};
26066 static constexpr bool traverse{false};
26067 static constexpr auto mbr_ptr{&SgProject::p_noclobber_output_file};
26068 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26069 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_noclobber_output_file>;
26070};
26071template <> struct describe_field_t<SgProject,bool,&SgProject::p_noclobber_if_different_output_file> {
26072 using parent = SgProject;
26073 using field_type = bool;
26074 static constexpr size_t position{76};
26075 static constexpr char const * const name{"noclobber_if_different_output_file"};
26076 static constexpr char const * const typestr{"bool"};
26077 static constexpr bool traverse{false};
26078 static constexpr auto mbr_ptr{&SgProject::p_noclobber_if_different_output_file};
26079 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26080 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_noclobber_if_different_output_file>;
26081};
26082template <> struct describe_field_t<SgProject,bool,&SgProject::p_suppressConstantFoldingPostProcessing> {
26083 using parent = SgProject;
26084 using field_type = bool;
26085 static constexpr size_t position{77};
26086 static constexpr char const * const name{"suppressConstantFoldingPostProcessing"};
26087 static constexpr char const * const typestr{"bool"};
26088 static constexpr bool traverse{false};
26089 static constexpr auto mbr_ptr{&SgProject::p_suppressConstantFoldingPostProcessing};
26090 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26091 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_suppressConstantFoldingPostProcessing>;
26092};
26093template <> struct describe_field_t<SgProject,bool,&SgProject::p_appendPID> {
26094 using parent = SgProject;
26095 using field_type = bool;
26096 static constexpr size_t position{78};
26097 static constexpr char const * const name{"appendPID"};
26098 static constexpr char const * const typestr{"bool"};
26099 static constexpr bool traverse{false};
26100 static constexpr auto mbr_ptr{&SgProject::p_appendPID};
26101 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26102 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_appendPID>;
26103};
26104template <> struct describe_field_t<SgProject,bool,&SgProject::p_reportOnHeaderFileUnparsing> {
26105 using parent = SgProject;
26106 using field_type = bool;
26107 static constexpr size_t position{79};
26108 static constexpr char const * const name{"reportOnHeaderFileUnparsing"};
26109 static constexpr char const * const typestr{"bool"};
26110 static constexpr bool traverse{false};
26111 static constexpr auto mbr_ptr{&SgProject::p_reportOnHeaderFileUnparsing};
26112 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26113 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_reportOnHeaderFileUnparsing>;
26114};
26115template <> struct describe_field_t<SgProject,std::string,&SgProject::p_applicationRootDirectory> {
26116 using parent = SgProject;
26117 using field_type = std::string;
26118 static constexpr size_t position{80};
26119 static constexpr char const * const name{"applicationRootDirectory"};
26120 static constexpr char const * const typestr{"std::string"};
26121 static constexpr bool traverse{false};
26122 static constexpr auto mbr_ptr{&SgProject::p_applicationRootDirectory};
26123 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26124 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_applicationRootDirectory>;
26125};
26126template <> struct describe_field_t<SgProject,bool,&SgProject::p_usingApplicationRootDirectory> {
26127 using parent = SgProject;
26128 using field_type = bool;
26129 static constexpr size_t position{81};
26130 static constexpr char const * const name{"usingApplicationRootDirectory"};
26131 static constexpr char const * const typestr{"bool"};
26132 static constexpr bool traverse{false};
26133 static constexpr auto mbr_ptr{&SgProject::p_usingApplicationRootDirectory};
26134 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26135 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_usingApplicationRootDirectory>;
26136};
26137template <> struct describe_field_t<SgProject,bool,&SgProject::p_usingDeferredTransformations> {
26138 using parent = SgProject;
26139 using field_type = bool;
26140 static constexpr size_t position{82};
26141 static constexpr char const * const name{"usingDeferredTransformations"};
26142 static constexpr char const * const typestr{"bool"};
26143 static constexpr bool traverse{false};
26144 static constexpr auto mbr_ptr{&SgProject::p_usingDeferredTransformations};
26145 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26146 using bind = Desc<SgProject, bool SgProject::*, &SgProject::p_usingDeferredTransformations>;
26147};
26148template <> struct describe_field_t<SgProject,std::string,&SgProject::p_astfile_out> {
26149 using parent = SgProject;
26150 using field_type = std::string;
26151 static constexpr size_t position{83};
26152 static constexpr char const * const name{"astfile_out"};
26153 static constexpr char const * const typestr{"std::string"};
26154 static constexpr bool traverse{false};
26155 static constexpr auto mbr_ptr{&SgProject::p_astfile_out};
26156 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26157 using bind = Desc<SgProject, std::string SgProject::*, &SgProject::p_astfile_out>;
26158};
26159template <> struct describe_field_t<SgProject,std::list<std::string>,&SgProject::p_astfiles_in> {
26160 using parent = SgProject;
26161 using field_type = std::list<std::string>;
26162 static constexpr size_t position{84};
26163 static constexpr char const * const name{"astfiles_in"};
26164 static constexpr char const * const typestr{"std::list<std::string>"};
26165 static constexpr bool traverse{false};
26166 static constexpr auto mbr_ptr{&SgProject::p_astfiles_in};
26167 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26168 using bind = Desc<SgProject, std::list<std::string> SgProject::*, &SgProject::p_astfiles_in>;
26169};
26170template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_extraIncludeDirectorySpecifierBeforeList> {
26171 using parent = SgProject;
26172 using field_type = SgStringList;
26173 static constexpr size_t position{85};
26174 static constexpr char const * const name{"extraIncludeDirectorySpecifierBeforeList"};
26175 static constexpr char const * const typestr{"SgStringList"};
26176 static constexpr bool traverse{false};
26177 static constexpr auto mbr_ptr{&SgProject::p_extraIncludeDirectorySpecifierBeforeList};
26178 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26179 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_extraIncludeDirectorySpecifierBeforeList>;
26180};
26181template <> struct describe_field_t<SgProject,SgStringList,&SgProject::p_extraIncludeDirectorySpecifierAfterList> {
26182 using parent = SgProject;
26183 using field_type = SgStringList;
26184 static constexpr size_t position{86};
26185 static constexpr char const * const name{"extraIncludeDirectorySpecifierAfterList"};
26186 static constexpr char const * const typestr{"SgStringList"};
26187 static constexpr bool traverse{false};
26188 static constexpr auto mbr_ptr{&SgProject::p_extraIncludeDirectorySpecifierAfterList};
26189 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26190 using bind = Desc<SgProject, SgStringList SgProject::*, &SgProject::p_extraIncludeDirectorySpecifierAfterList>;
26191};
26192template <> struct describe_node_t<SgProject> {
26193 using node = SgProject;
26194 using base = SgSupport;
26195 static constexpr char const * const name{"Project"};
26196 static constexpr unsigned long variant{657};
26197 static constexpr bool concrete{true};
26198 using subclasses_t = mp::List<>;
26199 using fields_t = mp::List<describe_field_t<SgProject,SgFileList*,&SgProject::p_fileList_ptr>, describe_field_t<SgProject,SgStringList,&SgProject::p_originalCommandLineArgumentList>, describe_field_t<SgProject,int,&SgProject::p_frontendErrorCode>, describe_field_t<SgProject,int,&SgProject::p_javacErrorCode>, describe_field_t<SgProject,int,&SgProject::p_ecjErrorCode>, describe_field_t<SgProject,int,&SgProject::p_midendErrorCode>, describe_field_t<SgProject,int,&SgProject::p_backendErrorCode>, describe_field_t<SgProject,bool,&SgProject::p_keep_going>, describe_field_t<SgProject,bool,&SgProject::p_unparser__clobber_input_file>, describe_field_t<SgProject,std::string,&SgProject::p_outputFileName>, describe_field_t<SgProject,SgStringList,&SgProject::p_sourceFileNameList>, describe_field_t<SgProject,SgStringList,&SgProject::p_objectFileNameList>, describe_field_t<SgProject,SgStringList,&SgProject::p_libraryFileList>, describe_field_t<SgProject,SgStringList,&SgProject::p_librarySpecifierList>, describe_field_t<SgProject,SgStringList,&SgProject::p_libraryDirectorySpecifierList>, describe_field_t<SgProject,SgStringList,&SgProject::p_includeDirectorySpecifierList>, describe_field_t<SgProject,SgStringList,&SgProject::p_macroSpecifierList>, describe_field_t<SgProject,SgStringList,&SgProject::p_preincludeFileList>, describe_field_t<SgProject,SgStringList,&SgProject::p_preincludeDirectoryList>, describe_field_t<SgProject,bool,&SgProject::p_compileOnly>, describe_field_t<SgProject,bool,&SgProject::p_wave>, describe_field_t<SgProject,bool,&SgProject::p_prelink>, describe_field_t<SgProject,SgProject::template_instantiation_enum,&SgProject::p_template_instantiation_mode>, describe_field_t<SgProject,bool,&SgProject::p_ast_merge>, describe_field_t<SgProject,std::string,&SgProject::p_projectSpecificDatabaseFile>, describe_field_t<SgProject,bool,&SgProject::p_C_PreprocessorOnly>, describe_field_t<SgProject,AstAttributeMechanism*,&SgProject::p_attributeMechanism>, describe_field_t<SgProject,std::string,&SgProject::p_compilationPerformanceFile>, describe_field_t<SgProject,SgStringList,&SgProject::p_includePathList>, describe_field_t<SgProject,SgStringList,&SgProject::p_excludePathList>, describe_field_t<SgProject,SgStringList,&SgProject::p_includeFileList>, describe_field_t<SgProject,SgStringList,&SgProject::p_excludeFileList>, describe_field_t<SgProject,bool,&SgProject::p_binary_only>, describe_field_t<SgProject,std::string,&SgProject::p_dataBaseFilename>, describe_field_t<SgProject,SgDirectoryList*,&SgProject::p_directoryList>, describe_field_t<SgProject,bool,&SgProject::p_C_only>, describe_field_t<SgProject,bool,&SgProject::p_Cxx_only>, describe_field_t<SgProject,bool,&SgProject::p_C11_only>, describe_field_t<SgProject,bool,&SgProject::p_Cxx0x_only>, describe_field_t<SgProject,bool,&SgProject::p_Cxx11_only>, describe_field_t<SgProject,bool,&SgProject::p_C14_only>, describe_field_t<SgProject,bool,&SgProject::p_Cxx14_only>, describe_field_t<SgProject,bool,&SgProject::p_Fortran_only>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Fortran_ofp_jvm_options>, describe_field_t<SgProject,bool,&SgProject::p_Java_only>, describe_field_t<SgProject,bool,&SgProject::p_Jvm_only>, describe_field_t<SgProject,bool,&SgProject::p_Jovial_only>, describe_field_t<SgProject,bool,&SgProject::p_Ada_only>, describe_field_t<SgProject,bool,&SgProject::p_openmp_linking>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_ecj_jvm_options>, describe_field_t<SgProject,bool,&SgProject::p_Java_batch_mode>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_classpath>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_sourcepath>, describe_field_t<SgProject,std::string,&SgProject::p_Java_destdir>, describe_field_t<SgProject,std::string,&SgProject::p_Java_source_destdir>, describe_field_t<SgProject,std::string,&SgProject::p_Java_s>, describe_field_t<SgProject,std::string,&SgProject::p_Java_source>, describe_field_t<SgProject,std::string,&SgProject::p_Java_target>, describe_field_t<SgProject,std::string,&SgProject::p_Java_encoding>, describe_field_t<SgProject,std::string,&SgProject::p_Java_g>, describe_field_t<SgProject,bool,&SgProject::p_Java_nowarn>, describe_field_t<SgProject,bool,&SgProject::p_Java_verbose>, describe_field_t<SgProject,bool,&SgProject::p_Java_deprecation>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_Java_bootclasspath>, describe_field_t<SgProject,bool,&SgProject::p_addCppDirectivesToAST>, describe_field_t<SgProject,std::map<std::string, std::set<PreprocessingInfo*> >,&SgProject::p_includingPreprocessingInfosMap>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_quotedIncludesSearchPaths>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_bracketedIncludesSearchPaths>, describe_field_t<SgProject,std::string,&SgProject::p_unparseHeaderFilesRootFolder>, describe_field_t<SgProject,bool,&SgProject::p_frontendConstantFolding>, describe_field_t<SgProject,SgGlobal*,&SgProject::p_globalScopeAcrossFiles>, describe_field_t<SgProject,bool,&SgProject::p_unparse_in_same_directory_as_input_file>, describe_field_t<SgProject,bool,&SgProject::p_stop_after_compilation_do_not_assemble_file>, describe_field_t<SgProject,std::string,&SgProject::p_gnuOptionForUndefinedSymbol>, describe_field_t<SgProject,bool,&SgProject::p_mode_32_bit>, describe_field_t<SgProject,bool,&SgProject::p_noclobber_output_file>, describe_field_t<SgProject,bool,&SgProject::p_noclobber_if_different_output_file>, describe_field_t<SgProject,bool,&SgProject::p_suppressConstantFoldingPostProcessing>, describe_field_t<SgProject,bool,&SgProject::p_appendPID>, describe_field_t<SgProject,bool,&SgProject::p_reportOnHeaderFileUnparsing>, describe_field_t<SgProject,std::string,&SgProject::p_applicationRootDirectory>, describe_field_t<SgProject,bool,&SgProject::p_usingApplicationRootDirectory>, describe_field_t<SgProject,bool,&SgProject::p_usingDeferredTransformations>, describe_field_t<SgProject,std::string,&SgProject::p_astfile_out>, describe_field_t<SgProject,std::list<std::string>,&SgProject::p_astfiles_in>, describe_field_t<SgProject,SgStringList,&SgProject::p_extraIncludeDirectorySpecifierBeforeList>, describe_field_t<SgProject,SgStringList,&SgProject::p_extraIncludeDirectorySpecifierAfterList>>;
26200};
26201template <> struct node_from_variant_t<657> { using type = SgProject; };
26202
26203// Class: PseudoDestructorRefExp
26204template <> struct describe_field_t<SgPseudoDestructorRefExp,SgType*,&SgPseudoDestructorRefExp::p_object_type> {
26206 using field_type = SgType*;
26207 static constexpr size_t position{0};
26208 static constexpr char const * const name{"object_type"};
26209 static constexpr char const * const typestr{"SgType*"};
26210 static constexpr bool traverse{false};
26211 static constexpr auto mbr_ptr{&SgPseudoDestructorRefExp::p_object_type};
26212 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26213 using bind = Desc<SgPseudoDestructorRefExp, SgType* SgPseudoDestructorRefExp::*, &SgPseudoDestructorRefExp::p_object_type>;
26214};
26215template <> struct describe_field_t<SgPseudoDestructorRefExp,SgType*,&SgPseudoDestructorRefExp::p_expression_type> {
26217 using field_type = SgType*;
26218 static constexpr size_t position{1};
26219 static constexpr char const * const name{"expression_type"};
26220 static constexpr char const * const typestr{"SgType*"};
26221 static constexpr bool traverse{false};
26222 static constexpr auto mbr_ptr{&SgPseudoDestructorRefExp::p_expression_type};
26223 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26224 using bind = Desc<SgPseudoDestructorRefExp, SgType* SgPseudoDestructorRefExp::*, &SgPseudoDestructorRefExp::p_expression_type>;
26225};
26226template <> struct describe_field_t<SgPseudoDestructorRefExp,int,&SgPseudoDestructorRefExp::p_name_qualification_length> {
26228 using field_type = int;
26229 static constexpr size_t position{2};
26230 static constexpr char const * const name{"name_qualification_length"};
26231 static constexpr char const * const typestr{"int"};
26232 static constexpr bool traverse{false};
26233 static constexpr auto mbr_ptr{&SgPseudoDestructorRefExp::p_name_qualification_length};
26234 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26235 using bind = Desc<SgPseudoDestructorRefExp, int SgPseudoDestructorRefExp::*, &SgPseudoDestructorRefExp::p_name_qualification_length>;
26236};
26237template <> struct describe_field_t<SgPseudoDestructorRefExp,bool,&SgPseudoDestructorRefExp::p_type_elaboration_required> {
26239 using field_type = bool;
26240 static constexpr size_t position{3};
26241 static constexpr char const * const name{"type_elaboration_required"};
26242 static constexpr char const * const typestr{"bool"};
26243 static constexpr bool traverse{false};
26244 static constexpr auto mbr_ptr{&SgPseudoDestructorRefExp::p_type_elaboration_required};
26245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26246 using bind = Desc<SgPseudoDestructorRefExp, bool SgPseudoDestructorRefExp::*, &SgPseudoDestructorRefExp::p_type_elaboration_required>;
26247};
26248template <> struct describe_field_t<SgPseudoDestructorRefExp,bool,&SgPseudoDestructorRefExp::p_global_qualification_required> {
26250 using field_type = bool;
26251 static constexpr size_t position{4};
26252 static constexpr char const * const name{"global_qualification_required"};
26253 static constexpr char const * const typestr{"bool"};
26254 static constexpr bool traverse{false};
26255 static constexpr auto mbr_ptr{&SgPseudoDestructorRefExp::p_global_qualification_required};
26256 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26257 using bind = Desc<SgPseudoDestructorRefExp, bool SgPseudoDestructorRefExp::*, &SgPseudoDestructorRefExp::p_global_qualification_required>;
26258};
26268template <> struct node_from_variant_t<658> { using type = SgPseudoDestructorRefExp; };
26269
26270// Class: PythonGlobalStmt
26271template <> struct describe_field_t<SgPythonGlobalStmt,SgInitializedNamePtrList,&SgPythonGlobalStmt::p_names> {
26272 using parent = SgPythonGlobalStmt;
26273 using field_type = SgInitializedNamePtrList;
26274 static constexpr size_t position{0};
26275 static constexpr char const * const name{"names"};
26276 static constexpr char const * const typestr{"SgInitializedNamePtrList"};
26277 static constexpr bool traverse{true};
26278 static constexpr auto mbr_ptr{&SgPythonGlobalStmt::p_names};
26279 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26280 using bind = Desc<SgPythonGlobalStmt, SgInitializedNamePtrList SgPythonGlobalStmt::*, &SgPythonGlobalStmt::p_names>;
26281};
26283 using node = SgPythonGlobalStmt;
26284 using base = SgStatement;
26285 static constexpr char const * const name{"PythonGlobalStmt"};
26286 static constexpr unsigned long variant{659};
26287 static constexpr bool concrete{true};
26288 using subclasses_t = mp::List<>;
26290};
26291template <> struct node_from_variant_t<659> { using type = SgPythonGlobalStmt; };
26292
26293// Class: PythonPrintStmt
26294template <> struct describe_field_t<SgPythonPrintStmt,SgExpression*,&SgPythonPrintStmt::p_destination> {
26295 using parent = SgPythonPrintStmt;
26296 using field_type = SgExpression*;
26297 static constexpr size_t position{0};
26298 static constexpr char const * const name{"destination"};
26299 static constexpr char const * const typestr{"SgExpression*"};
26300 static constexpr bool traverse{true};
26301 static constexpr auto mbr_ptr{&SgPythonPrintStmt::p_destination};
26302 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26303 using bind = Desc<SgPythonPrintStmt, SgExpression* SgPythonPrintStmt::*, &SgPythonPrintStmt::p_destination>;
26304};
26305template <> struct describe_field_t<SgPythonPrintStmt,SgExprListExp*,&SgPythonPrintStmt::p_values> {
26306 using parent = SgPythonPrintStmt;
26307 using field_type = SgExprListExp*;
26308 static constexpr size_t position{1};
26309 static constexpr char const * const name{"values"};
26310 static constexpr char const * const typestr{"SgExprListExp*"};
26311 static constexpr bool traverse{true};
26312 static constexpr auto mbr_ptr{&SgPythonPrintStmt::p_values};
26313 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26314 using bind = Desc<SgPythonPrintStmt, SgExprListExp* SgPythonPrintStmt::*, &SgPythonPrintStmt::p_values>;
26315};
26317 using node = SgPythonPrintStmt;
26318 using base = SgStatement;
26319 static constexpr char const * const name{"PythonPrintStmt"};
26320 static constexpr unsigned long variant{660};
26321 static constexpr bool concrete{true};
26322 using subclasses_t = mp::List<>;
26324};
26325template <> struct node_from_variant_t<660> { using type = SgPythonPrintStmt; };
26326
26327// Class: QualifiedName
26328template <> struct describe_field_t<SgQualifiedName,SgScopeStatement*,&SgQualifiedName::p_scope> {
26329 using parent = SgQualifiedName;
26331 static constexpr size_t position{0};
26332 static constexpr char const * const name{"scope"};
26333 static constexpr char const * const typestr{"SgScopeStatement*"};
26334 static constexpr bool traverse{false};
26335 static constexpr auto mbr_ptr{&SgQualifiedName::p_scope};
26336 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26337 using bind = Desc<SgQualifiedName, SgScopeStatement* SgQualifiedName::*, &SgQualifiedName::p_scope>;
26338};
26340 using node = SgQualifiedName;
26341 using base = SgSupport;
26342 static constexpr char const * const name{"QualifiedName"};
26343 static constexpr unsigned long variant{661};
26344 static constexpr bool concrete{true};
26345 using subclasses_t = mp::List<>;
26347};
26348template <> struct node_from_variant_t<661> { using type = SgQualifiedName; };
26349
26350// Class: QualifiedNameType
26351template <> struct describe_field_t<SgQualifiedNameType,SgType*,&SgQualifiedNameType::p_base_type> {
26353 using field_type = SgType*;
26354 static constexpr size_t position{0};
26355 static constexpr char const * const name{"base_type"};
26356 static constexpr char const * const typestr{"SgType*"};
26357 static constexpr bool traverse{false};
26358 static constexpr auto mbr_ptr{&SgQualifiedNameType::p_base_type};
26359 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26360 using bind = Desc<SgQualifiedNameType, SgType* SgQualifiedNameType::*, &SgQualifiedNameType::p_base_type>;
26361};
26362template <> struct describe_field_t<SgQualifiedNameType,SgQualifiedNamePtrList,&SgQualifiedNameType::p_qualifiedNameList> {
26364 using field_type = SgQualifiedNamePtrList;
26365 static constexpr size_t position{1};
26366 static constexpr char const * const name{"qualifiedNameList"};
26367 static constexpr char const * const typestr{"SgQualifiedNamePtrList"};
26368 static constexpr bool traverse{false};
26369 static constexpr auto mbr_ptr{&SgQualifiedNameType::p_qualifiedNameList};
26370 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26371 using bind = Desc<SgQualifiedNameType, SgQualifiedNamePtrList SgQualifiedNameType::*, &SgQualifiedNameType::p_qualifiedNameList>;
26372};
26374 using node = SgQualifiedNameType;
26375 using base = SgType;
26376 static constexpr char const * const name{"QualifiedNameType"};
26377 static constexpr unsigned long variant{662};
26378 static constexpr bool concrete{true};
26379 using subclasses_t = mp::List<>;
26381};
26382template <> struct node_from_variant_t<662> { using type = SgQualifiedNameType; };
26383
26384// Class: RangeExp
26385template <> struct describe_field_t<SgRangeExp,SgExpression*,&SgRangeExp::p_start> {
26386 using parent = SgRangeExp;
26387 using field_type = SgExpression*;
26388 static constexpr size_t position{0};
26389 static constexpr char const * const name{"start"};
26390 static constexpr char const * const typestr{"SgExpression*"};
26391 static constexpr bool traverse{true};
26392 static constexpr auto mbr_ptr{&SgRangeExp::p_start};
26393 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26394 using bind = Desc<SgRangeExp, SgExpression* SgRangeExp::*, &SgRangeExp::p_start>;
26395};
26396template <> struct describe_field_t<SgRangeExp,SgExpression*,&SgRangeExp::p_end> {
26397 using parent = SgRangeExp;
26398 using field_type = SgExpression*;
26399 static constexpr size_t position{1};
26400 static constexpr char const * const name{"end"};
26401 static constexpr char const * const typestr{"SgExpression*"};
26402 static constexpr bool traverse{true};
26403 static constexpr auto mbr_ptr{&SgRangeExp::p_end};
26404 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26405 using bind = Desc<SgRangeExp, SgExpression* SgRangeExp::*, &SgRangeExp::p_end>;
26406};
26407template <> struct describe_field_t<SgRangeExp,SgExpression*,&SgRangeExp::p_stride> {
26408 using parent = SgRangeExp;
26409 using field_type = SgExpression*;
26410 static constexpr size_t position{2};
26411 static constexpr char const * const name{"stride"};
26412 static constexpr char const * const typestr{"SgExpression*"};
26413 static constexpr bool traverse{true};
26414 static constexpr auto mbr_ptr{&SgRangeExp::p_stride};
26415 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26416 using bind = Desc<SgRangeExp, SgExpression* SgRangeExp::*, &SgRangeExp::p_stride>;
26417};
26418template <> struct describe_node_t<SgRangeExp> {
26419 using node = SgRangeExp;
26420 using base = SgExpression;
26421 static constexpr char const * const name{"RangeExp"};
26422 static constexpr unsigned long variant{663};
26423 static constexpr bool concrete{true};
26424 using subclasses_t = mp::List<>;
26426};
26427template <> struct node_from_variant_t<663> { using type = SgRangeExp; };
26428
26429// Class: RangeBasedForStatement
26430template <> struct describe_field_t<SgRangeBasedForStatement,SgVariableDeclaration*,&SgRangeBasedForStatement::p_iterator_declaration> {
26433 static constexpr size_t position{0};
26434 static constexpr char const * const name{"iterator_declaration"};
26435 static constexpr char const * const typestr{"SgVariableDeclaration*"};
26436 static constexpr bool traverse{true};
26437 static constexpr auto mbr_ptr{&SgRangeBasedForStatement::p_iterator_declaration};
26438 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26439 using bind = Desc<SgRangeBasedForStatement, SgVariableDeclaration* SgRangeBasedForStatement::*, &SgRangeBasedForStatement::p_iterator_declaration>;
26440};
26441template <> struct describe_field_t<SgRangeBasedForStatement,SgVariableDeclaration*,&SgRangeBasedForStatement::p_range_declaration> {
26444 static constexpr size_t position{1};
26445 static constexpr char const * const name{"range_declaration"};
26446 static constexpr char const * const typestr{"SgVariableDeclaration*"};
26447 static constexpr bool traverse{true};
26448 static constexpr auto mbr_ptr{&SgRangeBasedForStatement::p_range_declaration};
26449 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26450 using bind = Desc<SgRangeBasedForStatement, SgVariableDeclaration* SgRangeBasedForStatement::*, &SgRangeBasedForStatement::p_range_declaration>;
26451};
26452template <> struct describe_field_t<SgRangeBasedForStatement,SgVariableDeclaration*,&SgRangeBasedForStatement::p_begin_declaration> {
26455 static constexpr size_t position{2};
26456 static constexpr char const * const name{"begin_declaration"};
26457 static constexpr char const * const typestr{"SgVariableDeclaration*"};
26458 static constexpr bool traverse{true};
26459 static constexpr auto mbr_ptr{&SgRangeBasedForStatement::p_begin_declaration};
26460 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26461 using bind = Desc<SgRangeBasedForStatement, SgVariableDeclaration* SgRangeBasedForStatement::*, &SgRangeBasedForStatement::p_begin_declaration>;
26462};
26463template <> struct describe_field_t<SgRangeBasedForStatement,SgVariableDeclaration*,&SgRangeBasedForStatement::p_end_declaration> {
26466 static constexpr size_t position{3};
26467 static constexpr char const * const name{"end_declaration"};
26468 static constexpr char const * const typestr{"SgVariableDeclaration*"};
26469 static constexpr bool traverse{true};
26470 static constexpr auto mbr_ptr{&SgRangeBasedForStatement::p_end_declaration};
26471 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26472 using bind = Desc<SgRangeBasedForStatement, SgVariableDeclaration* SgRangeBasedForStatement::*, &SgRangeBasedForStatement::p_end_declaration>;
26473};
26474template <> struct describe_field_t<SgRangeBasedForStatement,SgExpression*,&SgRangeBasedForStatement::p_not_equal_expression> {
26476 using field_type = SgExpression*;
26477 static constexpr size_t position{4};
26478 static constexpr char const * const name{"not_equal_expression"};
26479 static constexpr char const * const typestr{"SgExpression*"};
26480 static constexpr bool traverse{true};
26481 static constexpr auto mbr_ptr{&SgRangeBasedForStatement::p_not_equal_expression};
26482 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26483 using bind = Desc<SgRangeBasedForStatement, SgExpression* SgRangeBasedForStatement::*, &SgRangeBasedForStatement::p_not_equal_expression>;
26484};
26485template <> struct describe_field_t<SgRangeBasedForStatement,SgExpression*,&SgRangeBasedForStatement::p_increment_expression> {
26487 using field_type = SgExpression*;
26488 static constexpr size_t position{5};
26489 static constexpr char const * const name{"increment_expression"};
26490 static constexpr char const * const typestr{"SgExpression*"};
26491 static constexpr bool traverse{true};
26492 static constexpr auto mbr_ptr{&SgRangeBasedForStatement::p_increment_expression};
26493 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26494 using bind = Desc<SgRangeBasedForStatement, SgExpression* SgRangeBasedForStatement::*, &SgRangeBasedForStatement::p_increment_expression>;
26495};
26496template <> struct describe_field_t<SgRangeBasedForStatement,SgStatement*,&SgRangeBasedForStatement::p_loop_body> {
26498 using field_type = SgStatement*;
26499 static constexpr size_t position{6};
26500 static constexpr char const * const name{"loop_body"};
26501 static constexpr char const * const typestr{"SgStatement*"};
26502 static constexpr bool traverse{true};
26503 static constexpr auto mbr_ptr{&SgRangeBasedForStatement::p_loop_body};
26504 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26505 using bind = Desc<SgRangeBasedForStatement, SgStatement* SgRangeBasedForStatement::*, &SgRangeBasedForStatement::p_loop_body>;
26506};
26516template <> struct node_from_variant_t<664> { using type = SgRangeBasedForStatement; };
26517
26518// Class: ReadStatement
26519template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_format> {
26520 using parent = SgReadStatement;
26521 using field_type = SgExpression*;
26522 static constexpr size_t position{0};
26523 static constexpr char const * const name{"format"};
26524 static constexpr char const * const typestr{"SgExpression*"};
26525 static constexpr bool traverse{true};
26526 static constexpr auto mbr_ptr{&SgReadStatement::p_format};
26527 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26528 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_format>;
26529};
26530template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_namelist> {
26531 using parent = SgReadStatement;
26532 using field_type = SgExpression*;
26533 static constexpr size_t position{1};
26534 static constexpr char const * const name{"namelist"};
26535 static constexpr char const * const typestr{"SgExpression*"};
26536 static constexpr bool traverse{true};
26537 static constexpr auto mbr_ptr{&SgReadStatement::p_namelist};
26538 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26539 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_namelist>;
26540};
26541template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_advance> {
26542 using parent = SgReadStatement;
26543 using field_type = SgExpression*;
26544 static constexpr size_t position{2};
26545 static constexpr char const * const name{"advance"};
26546 static constexpr char const * const typestr{"SgExpression*"};
26547 static constexpr bool traverse{true};
26548 static constexpr auto mbr_ptr{&SgReadStatement::p_advance};
26549 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26550 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_advance>;
26551};
26552template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_asynchronous> {
26553 using parent = SgReadStatement;
26554 using field_type = SgExpression*;
26555 static constexpr size_t position{3};
26556 static constexpr char const * const name{"asynchronous"};
26557 static constexpr char const * const typestr{"SgExpression*"};
26558 static constexpr bool traverse{true};
26559 static constexpr auto mbr_ptr{&SgReadStatement::p_asynchronous};
26560 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26561 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_asynchronous>;
26562};
26563template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_blank> {
26564 using parent = SgReadStatement;
26565 using field_type = SgExpression*;
26566 static constexpr size_t position{4};
26567 static constexpr char const * const name{"blank"};
26568 static constexpr char const * const typestr{"SgExpression*"};
26569 static constexpr bool traverse{true};
26570 static constexpr auto mbr_ptr{&SgReadStatement::p_blank};
26571 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26572 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_blank>;
26573};
26574template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_decimal> {
26575 using parent = SgReadStatement;
26576 using field_type = SgExpression*;
26577 static constexpr size_t position{5};
26578 static constexpr char const * const name{"decimal"};
26579 static constexpr char const * const typestr{"SgExpression*"};
26580 static constexpr bool traverse{true};
26581 static constexpr auto mbr_ptr{&SgReadStatement::p_decimal};
26582 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26583 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_decimal>;
26584};
26585template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_delim> {
26586 using parent = SgReadStatement;
26587 using field_type = SgExpression*;
26588 static constexpr size_t position{6};
26589 static constexpr char const * const name{"delim"};
26590 static constexpr char const * const typestr{"SgExpression*"};
26591 static constexpr bool traverse{true};
26592 static constexpr auto mbr_ptr{&SgReadStatement::p_delim};
26593 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26594 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_delim>;
26595};
26596template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_end> {
26597 using parent = SgReadStatement;
26598 using field_type = SgExpression*;
26599 static constexpr size_t position{7};
26600 static constexpr char const * const name{"end"};
26601 static constexpr char const * const typestr{"SgExpression*"};
26602 static constexpr bool traverse{true};
26603 static constexpr auto mbr_ptr{&SgReadStatement::p_end};
26604 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26605 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_end>;
26606};
26607template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_eor> {
26608 using parent = SgReadStatement;
26609 using field_type = SgExpression*;
26610 static constexpr size_t position{8};
26611 static constexpr char const * const name{"eor"};
26612 static constexpr char const * const typestr{"SgExpression*"};
26613 static constexpr bool traverse{true};
26614 static constexpr auto mbr_ptr{&SgReadStatement::p_eor};
26615 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26616 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_eor>;
26617};
26618template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_id> {
26619 using parent = SgReadStatement;
26620 using field_type = SgExpression*;
26621 static constexpr size_t position{9};
26622 static constexpr char const * const name{"id"};
26623 static constexpr char const * const typestr{"SgExpression*"};
26624 static constexpr bool traverse{true};
26625 static constexpr auto mbr_ptr{&SgReadStatement::p_id};
26626 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26627 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_id>;
26628};
26629template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_pad> {
26630 using parent = SgReadStatement;
26631 using field_type = SgExpression*;
26632 static constexpr size_t position{10};
26633 static constexpr char const * const name{"pad"};
26634 static constexpr char const * const typestr{"SgExpression*"};
26635 static constexpr bool traverse{true};
26636 static constexpr auto mbr_ptr{&SgReadStatement::p_pad};
26637 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26638 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_pad>;
26639};
26640template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_pos> {
26641 using parent = SgReadStatement;
26642 using field_type = SgExpression*;
26643 static constexpr size_t position{11};
26644 static constexpr char const * const name{"pos"};
26645 static constexpr char const * const typestr{"SgExpression*"};
26646 static constexpr bool traverse{true};
26647 static constexpr auto mbr_ptr{&SgReadStatement::p_pos};
26648 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26649 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_pos>;
26650};
26651template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_rec> {
26652 using parent = SgReadStatement;
26653 using field_type = SgExpression*;
26654 static constexpr size_t position{12};
26655 static constexpr char const * const name{"rec"};
26656 static constexpr char const * const typestr{"SgExpression*"};
26657 static constexpr bool traverse{true};
26658 static constexpr auto mbr_ptr{&SgReadStatement::p_rec};
26659 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26660 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_rec>;
26661};
26662template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_round> {
26663 using parent = SgReadStatement;
26664 using field_type = SgExpression*;
26665 static constexpr size_t position{13};
26666 static constexpr char const * const name{"round"};
26667 static constexpr char const * const typestr{"SgExpression*"};
26668 static constexpr bool traverse{true};
26669 static constexpr auto mbr_ptr{&SgReadStatement::p_round};
26670 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26671 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_round>;
26672};
26673template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_sign> {
26674 using parent = SgReadStatement;
26675 using field_type = SgExpression*;
26676 static constexpr size_t position{14};
26677 static constexpr char const * const name{"sign"};
26678 static constexpr char const * const typestr{"SgExpression*"};
26679 static constexpr bool traverse{true};
26680 static constexpr auto mbr_ptr{&SgReadStatement::p_sign};
26681 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26682 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_sign>;
26683};
26684template <> struct describe_field_t<SgReadStatement,SgExpression*,&SgReadStatement::p_size> {
26685 using parent = SgReadStatement;
26686 using field_type = SgExpression*;
26687 static constexpr size_t position{15};
26688 static constexpr char const * const name{"size"};
26689 static constexpr char const * const typestr{"SgExpression*"};
26690 static constexpr bool traverse{true};
26691 static constexpr auto mbr_ptr{&SgReadStatement::p_size};
26692 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26693 using bind = Desc<SgReadStatement, SgExpression* SgReadStatement::*, &SgReadStatement::p_size>;
26694};
26696 using node = SgReadStatement;
26697 using base = SgIOStatement;
26698 static constexpr char const * const name{"ReadStatement"};
26699 static constexpr unsigned long variant{665};
26700 static constexpr bool concrete{true};
26701 using subclasses_t = mp::List<>;
26703};
26704template <> struct node_from_variant_t<665> { using type = SgReadStatement; };
26705
26706// Class: RealPartOp
26707template <> struct describe_node_t<SgRealPartOp> {
26708 using node = SgRealPartOp;
26709 using base = SgUnaryOp;
26710 static constexpr char const * const name{"RealPartOp"};
26711 static constexpr unsigned long variant{666};
26712 static constexpr bool concrete{true};
26713 using subclasses_t = mp::List<>;
26714 using fields_t = mp::List<>;
26715};
26716template <> struct node_from_variant_t<666> { using type = SgRealPartOp; };
26717
26718// Class: RefExp
26720 using parent = SgRefExp;
26721 using field_type = SgType*;
26722 static constexpr size_t position{0};
26723 static constexpr char const * const name{"type_name"};
26724 static constexpr char const * const typestr{"SgType*"};
26725 static constexpr bool traverse{false};
26726 static constexpr auto mbr_ptr{&SgRefExp::p_type_name};
26727 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26728 using bind = Desc<SgRefExp, SgType* SgRefExp::*, &SgRefExp::p_type_name>;
26729};
26730template <> struct describe_node_t<SgRefExp> {
26731 using node = SgRefExp;
26732 using base = SgExpression;
26733 static constexpr char const * const name{"RefExp"};
26734 static constexpr unsigned long variant{667};
26735 static constexpr bool concrete{true};
26736 using subclasses_t = mp::List<>;
26738};
26739template <> struct node_from_variant_t<667> { using type = SgRefExp; };
26740
26741// Class: ReferenceType
26742template <> struct describe_field_t<SgReferenceType,SgType*,&SgReferenceType::p_base_type> {
26743 using parent = SgReferenceType;
26744 using field_type = SgType*;
26745 static constexpr size_t position{0};
26746 static constexpr char const * const name{"base_type"};
26747 static constexpr char const * const typestr{"SgType*"};
26748 static constexpr bool traverse{false};
26749 static constexpr auto mbr_ptr{&SgReferenceType::p_base_type};
26750 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26751 using bind = Desc<SgReferenceType, SgType* SgReferenceType::*, &SgReferenceType::p_base_type>;
26752};
26754 using node = SgReferenceType;
26755 using base = SgType;
26756 static constexpr char const * const name{"ReferenceType"};
26757 static constexpr unsigned long variant{668};
26758 static constexpr bool concrete{true};
26759 using subclasses_t = mp::List<>;
26761};
26762template <> struct node_from_variant_t<668> { using type = SgReferenceType; };
26763
26764// Class: RemOp
26765template <> struct describe_node_t<SgRemOp> {
26766 using node = SgRemOp;
26767 using base = SgBinaryOp;
26768 static constexpr char const * const name{"RemOp"};
26769 static constexpr unsigned long variant{669};
26770 static constexpr bool concrete{true};
26771 using subclasses_t = mp::List<>;
26772 using fields_t = mp::List<>;
26773};
26774template <> struct node_from_variant_t<669> { using type = SgRemOp; };
26775
26776// Class: RenamePair
26777template <> struct describe_field_t<SgRenamePair,SgName,&SgRenamePair::p_local_name> {
26778 using parent = SgRenamePair;
26779 using field_type = SgName;
26780 static constexpr size_t position{0};
26781 static constexpr char const * const name{"local_name"};
26782 static constexpr char const * const typestr{"SgName"};
26783 static constexpr bool traverse{false};
26784 static constexpr auto mbr_ptr{&SgRenamePair::p_local_name};
26785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26786 using bind = Desc<SgRenamePair, SgName SgRenamePair::*, &SgRenamePair::p_local_name>;
26787};
26788template <> struct describe_field_t<SgRenamePair,SgName,&SgRenamePair::p_use_name> {
26789 using parent = SgRenamePair;
26790 using field_type = SgName;
26791 static constexpr size_t position{1};
26792 static constexpr char const * const name{"use_name"};
26793 static constexpr char const * const typestr{"SgName"};
26794 static constexpr bool traverse{false};
26795 static constexpr auto mbr_ptr{&SgRenamePair::p_use_name};
26796 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26797 using bind = Desc<SgRenamePair, SgName SgRenamePair::*, &SgRenamePair::p_use_name>;
26798};
26799template <> struct describe_node_t<SgRenamePair> {
26800 using node = SgRenamePair;
26801 using base = SgLocatedNodeSupport;
26802 static constexpr char const * const name{"RenamePair"};
26803 static constexpr unsigned long variant{670};
26804 static constexpr bool concrete{true};
26805 using subclasses_t = mp::List<>;
26807};
26808template <> struct node_from_variant_t<670> { using type = SgRenamePair; };
26809
26810// Class: RenameSymbol
26811template <> struct describe_field_t<SgRenameSymbol,SgSymbol*,&SgRenameSymbol::p_original_symbol> {
26812 using parent = SgRenameSymbol;
26813 using field_type = SgSymbol*;
26814 static constexpr size_t position{0};
26815 static constexpr char const * const name{"original_symbol"};
26816 static constexpr char const * const typestr{"SgSymbol*"};
26817 static constexpr bool traverse{true};
26818 static constexpr auto mbr_ptr{&SgRenameSymbol::p_original_symbol};
26819 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26820 using bind = Desc<SgRenameSymbol, SgSymbol* SgRenameSymbol::*, &SgRenameSymbol::p_original_symbol>;
26821};
26822template <> struct describe_field_t<SgRenameSymbol,SgName,&SgRenameSymbol::p_new_name> {
26823 using parent = SgRenameSymbol;
26824 using field_type = SgName;
26825 static constexpr size_t position{1};
26826 static constexpr char const * const name{"new_name"};
26827 static constexpr char const * const typestr{"SgName"};
26828 static constexpr bool traverse{false};
26829 static constexpr auto mbr_ptr{&SgRenameSymbol::p_new_name};
26830 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26831 using bind = Desc<SgRenameSymbol, SgName SgRenameSymbol::*, &SgRenameSymbol::p_new_name>;
26832};
26833template <> struct describe_node_t<SgRenameSymbol> {
26834 using node = SgRenameSymbol;
26835 using base = SgFunctionSymbol;
26836 static constexpr char const * const name{"RenameSymbol"};
26837 static constexpr unsigned long variant{671};
26838 static constexpr bool concrete{true};
26839 using subclasses_t = mp::List<>;
26841};
26842template <> struct node_from_variant_t<671> { using type = SgRenameSymbol; };
26843
26844// Class: ReplicationOp
26846 using node = SgReplicationOp;
26847 using base = SgBinaryOp;
26848 static constexpr char const * const name{"ReplicationOp"};
26849 static constexpr unsigned long variant{672};
26850 static constexpr bool concrete{true};
26851 using subclasses_t = mp::List<>;
26852 using fields_t = mp::List<>;
26853};
26854template <> struct node_from_variant_t<672> { using type = SgReplicationOp; };
26855
26856// Class: ReturnStmt
26857template <> struct describe_field_t<SgReturnStmt,SgExpression*,&SgReturnStmt::p_expression> {
26858 using parent = SgReturnStmt;
26859 using field_type = SgExpression*;
26860 static constexpr size_t position{0};
26861 static constexpr char const * const name{"expression"};
26862 static constexpr char const * const typestr{"SgExpression*"};
26863 static constexpr bool traverse{true};
26864 static constexpr auto mbr_ptr{&SgReturnStmt::p_expression};
26865 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26866 using bind = Desc<SgReturnStmt, SgExpression* SgReturnStmt::*, &SgReturnStmt::p_expression>;
26867};
26868template <> struct describe_node_t<SgReturnStmt> {
26869 using node = SgReturnStmt;
26870 using base = SgStatement;
26871 static constexpr char const * const name{"ReturnStmt"};
26872 static constexpr unsigned long variant{673};
26873 static constexpr bool concrete{true};
26874 using subclasses_t = mp::List<>;
26876};
26877template <> struct node_from_variant_t<673> { using type = SgReturnStmt; };
26878
26879// Class: RewindStatement
26881 using node = SgRewindStatement;
26882 using base = SgIOStatement;
26883 static constexpr char const * const name{"RewindStatement"};
26884 static constexpr unsigned long variant{674};
26885 static constexpr bool concrete{true};
26886 using subclasses_t = mp::List<>;
26887 using fields_t = mp::List<>;
26888};
26889template <> struct node_from_variant_t<674> { using type = SgRewindStatement; };
26890
26891// Class: RshiftAssignOp
26893 using node = SgRshiftAssignOp;
26894 using base = SgCompoundAssignOp;
26895 static constexpr char const * const name{"RshiftAssignOp"};
26896 static constexpr unsigned long variant{675};
26897 static constexpr bool concrete{true};
26898 using subclasses_t = mp::List<>;
26899 using fields_t = mp::List<>;
26900};
26901template <> struct node_from_variant_t<675> { using type = SgRshiftAssignOp; };
26902
26903// Class: RshiftOp
26904template <> struct describe_node_t<SgRshiftOp> {
26905 using node = SgRshiftOp;
26906 using base = SgBinaryOp;
26907 static constexpr char const * const name{"RshiftOp"};
26908 static constexpr unsigned long variant{676};
26909 static constexpr bool concrete{true};
26910 using subclasses_t = mp::List<>;
26911 using fields_t = mp::List<>;
26912};
26913template <> struct node_from_variant_t<676> { using type = SgRshiftOp; };
26914
26915// Class: RvalueReferenceType
26916template <> struct describe_field_t<SgRvalueReferenceType,SgType*,&SgRvalueReferenceType::p_base_type> {
26918 using field_type = SgType*;
26919 static constexpr size_t position{0};
26920 static constexpr char const * const name{"base_type"};
26921 static constexpr char const * const typestr{"SgType*"};
26922 static constexpr bool traverse{false};
26923 static constexpr auto mbr_ptr{&SgRvalueReferenceType::p_base_type};
26924 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26925 using bind = Desc<SgRvalueReferenceType, SgType* SgRvalueReferenceType::*, &SgRvalueReferenceType::p_base_type>;
26926};
26929 using base = SgType;
26930 static constexpr char const * const name{"RvalueReferenceType"};
26931 static constexpr unsigned long variant{677};
26932 static constexpr bool concrete{true};
26933 using subclasses_t = mp::List<>;
26935};
26936template <> struct node_from_variant_t<677> { using type = SgRvalueReferenceType; };
26937
26938// Class: JavaUnsignedRshiftAssignOp
26941 using base = SgCompoundAssignOp;
26942 static constexpr char const * const name{"JavaUnsignedRshiftAssignOp"};
26943 static constexpr unsigned long variant{678};
26944 static constexpr bool concrete{true};
26945 using subclasses_t = mp::List<>;
26946 using fields_t = mp::List<>;
26947};
26948template <> struct node_from_variant_t<678> { using type = SgJavaUnsignedRshiftAssignOp; };
26949
26950// Class: JavaUnsignedRshiftOp
26953 using base = SgBinaryOp;
26954 static constexpr char const * const name{"JavaUnsignedRshiftOp"};
26955 static constexpr unsigned long variant{679};
26956 static constexpr bool concrete{true};
26957 using subclasses_t = mp::List<>;
26958 using fields_t = mp::List<>;
26959};
26960template <> struct node_from_variant_t<679> { using type = SgJavaUnsignedRshiftOp; };
26961
26962// Class: ScopeOp
26963template <> struct describe_node_t<SgScopeOp> {
26964 using node = SgScopeOp;
26965 using base = SgBinaryOp;
26966 static constexpr char const * const name{"ScopeOp"};
26967 static constexpr unsigned long variant{680};
26968 static constexpr bool concrete{true};
26969 using subclasses_t = mp::List<>;
26970 using fields_t = mp::List<>;
26971};
26972template <> struct node_from_variant_t<680> { using type = SgScopeOp; };
26973
26974// Class: ScopeStatement
26976 using parent = SgScopeStatement;
26977 using field_type = SgSymbolTable*;
26978 static constexpr size_t position{0};
26979 static constexpr char const * const name{"symbol_table"};
26980 static constexpr char const * const typestr{"SgSymbolTable*"};
26981 static constexpr bool traverse{false};
26982 static constexpr auto mbr_ptr{&SgScopeStatement::p_symbol_table};
26983 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26984 using bind = Desc<SgScopeStatement, SgSymbolTable* SgScopeStatement::*, &SgScopeStatement::p_symbol_table>;
26985};
26986template <> struct describe_field_t<SgScopeStatement,SgTypeTable*,&SgScopeStatement::p_type_table> {
26987 using parent = SgScopeStatement;
26988 using field_type = SgTypeTable*;
26989 static constexpr size_t position{1};
26990 static constexpr char const * const name{"type_table"};
26991 static constexpr char const * const typestr{"SgTypeTable*"};
26992 static constexpr bool traverse{false};
26993 static constexpr auto mbr_ptr{&SgScopeStatement::p_type_table};
26994 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
26995 using bind = Desc<SgScopeStatement, SgTypeTable* SgScopeStatement::*, &SgScopeStatement::p_type_table>;
26996};
26997template <> struct describe_field_t<SgScopeStatement,std::set<SgSymbol*>,&SgScopeStatement::p_type_elaboration_list> {
26998 using parent = SgScopeStatement;
26999 using field_type = std::set<SgSymbol*>;
27000 static constexpr size_t position{2};
27001 static constexpr char const * const name{"type_elaboration_list"};
27002 static constexpr char const * const typestr{"std::set<SgSymbol*>"};
27003 static constexpr bool traverse{false};
27004 static constexpr auto mbr_ptr{&SgScopeStatement::p_type_elaboration_list};
27005 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27006 using bind = Desc<SgScopeStatement, std::set<SgSymbol*> SgScopeStatement::*, &SgScopeStatement::p_type_elaboration_list>;
27007};
27008template <> struct describe_field_t<SgScopeStatement,std::set<SgSymbol*>,&SgScopeStatement::p_hidden_type_list> {
27009 using parent = SgScopeStatement;
27010 using field_type = std::set<SgSymbol*>;
27011 static constexpr size_t position{3};
27012 static constexpr char const * const name{"hidden_type_list"};
27013 static constexpr char const * const typestr{"std::set<SgSymbol*>"};
27014 static constexpr bool traverse{false};
27015 static constexpr auto mbr_ptr{&SgScopeStatement::p_hidden_type_list};
27016 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27017 using bind = Desc<SgScopeStatement, std::set<SgSymbol*> SgScopeStatement::*, &SgScopeStatement::p_hidden_type_list>;
27018};
27019template <> struct describe_field_t<SgScopeStatement,std::set<SgSymbol*>,&SgScopeStatement::p_hidden_declaration_list> {
27020 using parent = SgScopeStatement;
27021 using field_type = std::set<SgSymbol*>;
27022 static constexpr size_t position{4};
27023 static constexpr char const * const name{"hidden_declaration_list"};
27024 static constexpr char const * const typestr{"std::set<SgSymbol*>"};
27025 static constexpr bool traverse{false};
27026 static constexpr auto mbr_ptr{&SgScopeStatement::p_hidden_declaration_list};
27027 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27028 using bind = Desc<SgScopeStatement, std::set<SgSymbol*> SgScopeStatement::*, &SgScopeStatement::p_hidden_declaration_list>;
27029};
27030template <> struct describe_field_t<SgScopeStatement,SgPragma*,&SgScopeStatement::p_pragma> {
27031 using parent = SgScopeStatement;
27032 using field_type = SgPragma*;
27033 static constexpr size_t position{5};
27034 static constexpr char const * const name{"pragma"};
27035 static constexpr char const * const typestr{"SgPragma*"};
27036 static constexpr bool traverse{false};
27037 static constexpr auto mbr_ptr{&SgScopeStatement::p_pragma};
27038 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27039 using bind = Desc<SgScopeStatement, SgPragma* SgScopeStatement::*, &SgScopeStatement::p_pragma>;
27040};
27042 using node = SgScopeStatement;
27043 using base = SgStatement;
27044 static constexpr char const * const name{"ScopeStatement"};
27045 static constexpr unsigned long variant{681};
27046 static constexpr bool concrete{false};
27049};
27050template <> struct node_from_variant_t<681> { using type = SgScopeStatement; };
27051
27052// Class: SequenceStatement
27054 using node = SgSequenceStatement;
27055 using base = SgStatement;
27056 static constexpr char const * const name{"SequenceStatement"};
27057 static constexpr unsigned long variant{682};
27058 static constexpr bool concrete{true};
27059 using subclasses_t = mp::List<>;
27060 using fields_t = mp::List<>;
27061};
27062template <> struct node_from_variant_t<682> { using type = SgSequenceStatement; };
27063
27064// Class: SetComprehension
27065template <> struct describe_field_t<SgSetComprehension,SgExpression*,&SgSetComprehension::p_element> {
27066 using parent = SgSetComprehension;
27067 using field_type = SgExpression*;
27068 static constexpr size_t position{0};
27069 static constexpr char const * const name{"element"};
27070 static constexpr char const * const typestr{"SgExpression*"};
27071 static constexpr bool traverse{true};
27072 static constexpr auto mbr_ptr{&SgSetComprehension::p_element};
27073 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27074 using bind = Desc<SgSetComprehension, SgExpression* SgSetComprehension::*, &SgSetComprehension::p_element>;
27075};
27076template <> struct describe_field_t<SgSetComprehension,SgExprListExp*,&SgSetComprehension::p_generators> {
27077 using parent = SgSetComprehension;
27078 using field_type = SgExprListExp*;
27079 static constexpr size_t position{1};
27080 static constexpr char const * const name{"generators"};
27081 static constexpr char const * const typestr{"SgExprListExp*"};
27082 static constexpr bool traverse{true};
27083 static constexpr auto mbr_ptr{&SgSetComprehension::p_generators};
27084 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27085 using bind = Desc<SgSetComprehension, SgExprListExp* SgSetComprehension::*, &SgSetComprehension::p_generators>;
27086};
27088 using node = SgSetComprehension;
27089 using base = SgExpression;
27090 static constexpr char const * const name{"SetComprehension"};
27091 static constexpr unsigned long variant{683};
27092 static constexpr bool concrete{true};
27093 using subclasses_t = mp::List<>;
27095};
27096template <> struct node_from_variant_t<683> { using type = SgSetComprehension; };
27097
27098// Class: ShortVal
27099template <> struct describe_field_t<SgShortVal,short,&SgShortVal::p_value> {
27100 using parent = SgShortVal;
27101 using field_type = short;
27102 static constexpr size_t position{0};
27103 static constexpr char const * const name{"value"};
27104 static constexpr char const * const typestr{"short"};
27105 static constexpr bool traverse{false};
27106 static constexpr auto mbr_ptr{&SgShortVal::p_value};
27107 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27108 using bind = Desc<SgShortVal, short SgShortVal::*, &SgShortVal::p_value>;
27109};
27110template <> struct describe_field_t<SgShortVal,std::string,&SgShortVal::p_valueString> {
27111 using parent = SgShortVal;
27112 using field_type = std::string;
27113 static constexpr size_t position{1};
27114 static constexpr char const * const name{"valueString"};
27115 static constexpr char const * const typestr{"std::string"};
27116 static constexpr bool traverse{false};
27117 static constexpr auto mbr_ptr{&SgShortVal::p_valueString};
27118 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27119 using bind = Desc<SgShortVal, std::string SgShortVal::*, &SgShortVal::p_valueString>;
27120};
27121template <> struct describe_node_t<SgShortVal> {
27122 using node = SgShortVal;
27123 using base = SgValueExp;
27124 static constexpr char const * const name{"ShortVal"};
27125 static constexpr unsigned long variant{684};
27126 static constexpr bool concrete{true};
27127 using subclasses_t = mp::List<>;
27129};
27130template <> struct node_from_variant_t<684> { using type = SgShortVal; };
27131
27132// Class: SizeOfOp
27134 using parent = SgSizeOfOp;
27135 using field_type = SgExpression*;
27136 static constexpr size_t position{0};
27137 static constexpr char const * const name{"operand_expr"};
27138 static constexpr char const * const typestr{"SgExpression*"};
27139 static constexpr bool traverse{true};
27140 static constexpr auto mbr_ptr{&SgSizeOfOp::p_operand_expr};
27141 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27142 using bind = Desc<SgSizeOfOp, SgExpression* SgSizeOfOp::*, &SgSizeOfOp::p_operand_expr>;
27143};
27145 using parent = SgSizeOfOp;
27146 using field_type = SgType*;
27147 static constexpr size_t position{1};
27148 static constexpr char const * const name{"operand_type"};
27149 static constexpr char const * const typestr{"SgType*"};
27150 static constexpr bool traverse{false};
27151 static constexpr auto mbr_ptr{&SgSizeOfOp::p_operand_type};
27152 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27153 using bind = Desc<SgSizeOfOp, SgType* SgSizeOfOp::*, &SgSizeOfOp::p_operand_type>;
27154};
27156 using parent = SgSizeOfOp;
27157 using field_type = SgType*;
27158 static constexpr size_t position{2};
27159 static constexpr char const * const name{"expression_type"};
27160 static constexpr char const * const typestr{"SgType*"};
27161 static constexpr bool traverse{false};
27162 static constexpr auto mbr_ptr{&SgSizeOfOp::p_expression_type};
27163 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27164 using bind = Desc<SgSizeOfOp, SgType* SgSizeOfOp::*, &SgSizeOfOp::p_expression_type>;
27165};
27166template <> struct describe_field_t<SgSizeOfOp,int,&SgSizeOfOp::p_name_qualification_length> {
27167 using parent = SgSizeOfOp;
27168 using field_type = int;
27169 static constexpr size_t position{3};
27170 static constexpr char const * const name{"name_qualification_length"};
27171 static constexpr char const * const typestr{"int"};
27172 static constexpr bool traverse{false};
27173 static constexpr auto mbr_ptr{&SgSizeOfOp::p_name_qualification_length};
27174 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27175 using bind = Desc<SgSizeOfOp, int SgSizeOfOp::*, &SgSizeOfOp::p_name_qualification_length>;
27176};
27177template <> struct describe_field_t<SgSizeOfOp,bool,&SgSizeOfOp::p_type_elaboration_required> {
27178 using parent = SgSizeOfOp;
27179 using field_type = bool;
27180 static constexpr size_t position{4};
27181 static constexpr char const * const name{"type_elaboration_required"};
27182 static constexpr char const * const typestr{"bool"};
27183 static constexpr bool traverse{false};
27184 static constexpr auto mbr_ptr{&SgSizeOfOp::p_type_elaboration_required};
27185 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27186 using bind = Desc<SgSizeOfOp, bool SgSizeOfOp::*, &SgSizeOfOp::p_type_elaboration_required>;
27187};
27188template <> struct describe_field_t<SgSizeOfOp,bool,&SgSizeOfOp::p_global_qualification_required> {
27189 using parent = SgSizeOfOp;
27190 using field_type = bool;
27191 static constexpr size_t position{5};
27192 static constexpr char const * const name{"global_qualification_required"};
27193 static constexpr char const * const typestr{"bool"};
27194 static constexpr bool traverse{false};
27195 static constexpr auto mbr_ptr{&SgSizeOfOp::p_global_qualification_required};
27196 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27197 using bind = Desc<SgSizeOfOp, bool SgSizeOfOp::*, &SgSizeOfOp::p_global_qualification_required>;
27198};
27199template <> struct describe_field_t<SgSizeOfOp,bool,&SgSizeOfOp::p_sizeOfContainsBaseTypeDefiningDeclaration> {
27200 using parent = SgSizeOfOp;
27201 using field_type = bool;
27202 static constexpr size_t position{6};
27203 static constexpr char const * const name{"sizeOfContainsBaseTypeDefiningDeclaration"};
27204 static constexpr char const * const typestr{"bool"};
27205 static constexpr bool traverse{false};
27206 static constexpr auto mbr_ptr{&SgSizeOfOp::p_sizeOfContainsBaseTypeDefiningDeclaration};
27207 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27208 using bind = Desc<SgSizeOfOp, bool SgSizeOfOp::*, &SgSizeOfOp::p_sizeOfContainsBaseTypeDefiningDeclaration>;
27209};
27210template <> struct describe_field_t<SgSizeOfOp,bool,&SgSizeOfOp::p_is_objectless_nonstatic_data_member_reference> {
27211 using parent = SgSizeOfOp;
27212 using field_type = bool;
27213 static constexpr size_t position{7};
27214 static constexpr char const * const name{"is_objectless_nonstatic_data_member_reference"};
27215 static constexpr char const * const typestr{"bool"};
27216 static constexpr bool traverse{false};
27217 static constexpr auto mbr_ptr{&SgSizeOfOp::p_is_objectless_nonstatic_data_member_reference};
27218 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27219 using bind = Desc<SgSizeOfOp, bool SgSizeOfOp::*, &SgSizeOfOp::p_is_objectless_nonstatic_data_member_reference>;
27220};
27221template <> struct describe_field_t<SgSizeOfOp,int,&SgSizeOfOp::p_name_qualification_for_pointer_to_member_class_length> {
27222 using parent = SgSizeOfOp;
27223 using field_type = int;
27224 static constexpr size_t position{8};
27225 static constexpr char const * const name{"name_qualification_for_pointer_to_member_class_length"};
27226 static constexpr char const * const typestr{"int"};
27227 static constexpr bool traverse{false};
27228 static constexpr auto mbr_ptr{&SgSizeOfOp::p_name_qualification_for_pointer_to_member_class_length};
27229 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27230 using bind = Desc<SgSizeOfOp, int SgSizeOfOp::*, &SgSizeOfOp::p_name_qualification_for_pointer_to_member_class_length>;
27231};
27232template <> struct describe_field_t<SgSizeOfOp,bool,&SgSizeOfOp::p_type_elaboration_for_pointer_to_member_class_required> {
27233 using parent = SgSizeOfOp;
27234 using field_type = bool;
27235 static constexpr size_t position{9};
27236 static constexpr char const * const name{"type_elaboration_for_pointer_to_member_class_required"};
27237 static constexpr char const * const typestr{"bool"};
27238 static constexpr bool traverse{false};
27239 static constexpr auto mbr_ptr{&SgSizeOfOp::p_type_elaboration_for_pointer_to_member_class_required};
27240 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27241 using bind = Desc<SgSizeOfOp, bool SgSizeOfOp::*, &SgSizeOfOp::p_type_elaboration_for_pointer_to_member_class_required>;
27242};
27243template <> struct describe_field_t<SgSizeOfOp,bool,&SgSizeOfOp::p_global_qualification_for_pointer_to_member_class_required> {
27244 using parent = SgSizeOfOp;
27245 using field_type = bool;
27246 static constexpr size_t position{10};
27247 static constexpr char const * const name{"global_qualification_for_pointer_to_member_class_required"};
27248 static constexpr char const * const typestr{"bool"};
27249 static constexpr bool traverse{false};
27250 static constexpr auto mbr_ptr{&SgSizeOfOp::p_global_qualification_for_pointer_to_member_class_required};
27251 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27252 using bind = Desc<SgSizeOfOp, bool SgSizeOfOp::*, &SgSizeOfOp::p_global_qualification_for_pointer_to_member_class_required>;
27253};
27263template <> struct node_from_variant_t<685> { using type = SgSizeOfOp; };
27264
27265// Class: AlignOfOp
27266template <> struct describe_field_t<SgAlignOfOp,SgExpression*,&SgAlignOfOp::p_operand_expr> {
27267 using parent = SgAlignOfOp;
27268 using field_type = SgExpression*;
27269 static constexpr size_t position{0};
27270 static constexpr char const * const name{"operand_expr"};
27271 static constexpr char const * const typestr{"SgExpression*"};
27272 static constexpr bool traverse{true};
27273 static constexpr auto mbr_ptr{&SgAlignOfOp::p_operand_expr};
27274 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27275 using bind = Desc<SgAlignOfOp, SgExpression* SgAlignOfOp::*, &SgAlignOfOp::p_operand_expr>;
27276};
27277template <> struct describe_field_t<SgAlignOfOp,SgType*,&SgAlignOfOp::p_operand_type> {
27278 using parent = SgAlignOfOp;
27279 using field_type = SgType*;
27280 static constexpr size_t position{1};
27281 static constexpr char const * const name{"operand_type"};
27282 static constexpr char const * const typestr{"SgType*"};
27283 static constexpr bool traverse{false};
27284 static constexpr auto mbr_ptr{&SgAlignOfOp::p_operand_type};
27285 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27286 using bind = Desc<SgAlignOfOp, SgType* SgAlignOfOp::*, &SgAlignOfOp::p_operand_type>;
27287};
27288template <> struct describe_field_t<SgAlignOfOp,SgType*,&SgAlignOfOp::p_expression_type> {
27289 using parent = SgAlignOfOp;
27290 using field_type = SgType*;
27291 static constexpr size_t position{2};
27292 static constexpr char const * const name{"expression_type"};
27293 static constexpr char const * const typestr{"SgType*"};
27294 static constexpr bool traverse{false};
27295 static constexpr auto mbr_ptr{&SgAlignOfOp::p_expression_type};
27296 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27297 using bind = Desc<SgAlignOfOp, SgType* SgAlignOfOp::*, &SgAlignOfOp::p_expression_type>;
27298};
27299template <> struct describe_field_t<SgAlignOfOp,int,&SgAlignOfOp::p_name_qualification_length> {
27300 using parent = SgAlignOfOp;
27301 using field_type = int;
27302 static constexpr size_t position{3};
27303 static constexpr char const * const name{"name_qualification_length"};
27304 static constexpr char const * const typestr{"int"};
27305 static constexpr bool traverse{false};
27306 static constexpr auto mbr_ptr{&SgAlignOfOp::p_name_qualification_length};
27307 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27308 using bind = Desc<SgAlignOfOp, int SgAlignOfOp::*, &SgAlignOfOp::p_name_qualification_length>;
27309};
27310template <> struct describe_field_t<SgAlignOfOp,bool,&SgAlignOfOp::p_type_elaboration_required> {
27311 using parent = SgAlignOfOp;
27312 using field_type = bool;
27313 static constexpr size_t position{4};
27314 static constexpr char const * const name{"type_elaboration_required"};
27315 static constexpr char const * const typestr{"bool"};
27316 static constexpr bool traverse{false};
27317 static constexpr auto mbr_ptr{&SgAlignOfOp::p_type_elaboration_required};
27318 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27319 using bind = Desc<SgAlignOfOp, bool SgAlignOfOp::*, &SgAlignOfOp::p_type_elaboration_required>;
27320};
27321template <> struct describe_field_t<SgAlignOfOp,bool,&SgAlignOfOp::p_global_qualification_required> {
27322 using parent = SgAlignOfOp;
27323 using field_type = bool;
27324 static constexpr size_t position{5};
27325 static constexpr char const * const name{"global_qualification_required"};
27326 static constexpr char const * const typestr{"bool"};
27327 static constexpr bool traverse{false};
27328 static constexpr auto mbr_ptr{&SgAlignOfOp::p_global_qualification_required};
27329 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27330 using bind = Desc<SgAlignOfOp, bool SgAlignOfOp::*, &SgAlignOfOp::p_global_qualification_required>;
27331};
27332template <> struct describe_field_t<SgAlignOfOp,bool,&SgAlignOfOp::p_alignOfContainsBaseTypeDefiningDeclaration> {
27333 using parent = SgAlignOfOp;
27334 using field_type = bool;
27335 static constexpr size_t position{6};
27336 static constexpr char const * const name{"alignOfContainsBaseTypeDefiningDeclaration"};
27337 static constexpr char const * const typestr{"bool"};
27338 static constexpr bool traverse{false};
27339 static constexpr auto mbr_ptr{&SgAlignOfOp::p_alignOfContainsBaseTypeDefiningDeclaration};
27340 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27341 using bind = Desc<SgAlignOfOp, bool SgAlignOfOp::*, &SgAlignOfOp::p_alignOfContainsBaseTypeDefiningDeclaration>;
27342};
27352template <> struct node_from_variant_t<686> { using type = SgAlignOfOp; };
27353
27354// Class: JavaInstanceOfOp
27355template <> struct describe_field_t<SgJavaInstanceOfOp,SgExpression*,&SgJavaInstanceOfOp::p_operand_expr> {
27356 using parent = SgJavaInstanceOfOp;
27357 using field_type = SgExpression*;
27358 static constexpr size_t position{0};
27359 static constexpr char const * const name{"operand_expr"};
27360 static constexpr char const * const typestr{"SgExpression*"};
27361 static constexpr bool traverse{true};
27362 static constexpr auto mbr_ptr{&SgJavaInstanceOfOp::p_operand_expr};
27363 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27364 using bind = Desc<SgJavaInstanceOfOp, SgExpression* SgJavaInstanceOfOp::*, &SgJavaInstanceOfOp::p_operand_expr>;
27365};
27366template <> struct describe_field_t<SgJavaInstanceOfOp,SgType*,&SgJavaInstanceOfOp::p_operand_type> {
27367 using parent = SgJavaInstanceOfOp;
27368 using field_type = SgType*;
27369 static constexpr size_t position{1};
27370 static constexpr char const * const name{"operand_type"};
27371 static constexpr char const * const typestr{"SgType*"};
27372 static constexpr bool traverse{false};
27373 static constexpr auto mbr_ptr{&SgJavaInstanceOfOp::p_operand_type};
27374 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27375 using bind = Desc<SgJavaInstanceOfOp, SgType* SgJavaInstanceOfOp::*, &SgJavaInstanceOfOp::p_operand_type>;
27376};
27377template <> struct describe_field_t<SgJavaInstanceOfOp,SgType*,&SgJavaInstanceOfOp::p_expression_type> {
27378 using parent = SgJavaInstanceOfOp;
27379 using field_type = SgType*;
27380 static constexpr size_t position{2};
27381 static constexpr char const * const name{"expression_type"};
27382 static constexpr char const * const typestr{"SgType*"};
27383 static constexpr bool traverse{false};
27384 static constexpr auto mbr_ptr{&SgJavaInstanceOfOp::p_expression_type};
27385 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27386 using bind = Desc<SgJavaInstanceOfOp, SgType* SgJavaInstanceOfOp::*, &SgJavaInstanceOfOp::p_expression_type>;
27387};
27389 using node = SgJavaInstanceOfOp;
27390 using base = SgExpression;
27391 static constexpr char const * const name{"JavaInstanceOfOp"};
27392 static constexpr unsigned long variant{687};
27393 static constexpr bool concrete{true};
27394 using subclasses_t = mp::List<>;
27396};
27397template <> struct node_from_variant_t<687> { using type = SgJavaInstanceOfOp; };
27398
27399// Class: SourceFile
27400template <> struct describe_field_t<SgSourceFile,SgGlobal*,&SgSourceFile::p_globalScope> {
27401 using parent = SgSourceFile;
27402 using field_type = SgGlobal*;
27403 static constexpr size_t position{0};
27404 static constexpr char const * const name{"globalScope"};
27405 static constexpr char const * const typestr{"SgGlobal*"};
27406 static constexpr bool traverse{true};
27407 static constexpr auto mbr_ptr{&SgSourceFile::p_globalScope};
27408 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27409 using bind = Desc<SgSourceFile, SgGlobal* SgSourceFile::*, &SgSourceFile::p_globalScope>;
27410};
27411template <> struct describe_field_t<SgSourceFile,SgModuleStatementPtrList,&SgSourceFile::p_module_list> {
27412 using parent = SgSourceFile;
27413 using field_type = SgModuleStatementPtrList;
27414 static constexpr size_t position{1};
27415 static constexpr char const * const name{"module_list"};
27416 static constexpr char const * const typestr{"SgModuleStatementPtrList"};
27417 static constexpr bool traverse{false};
27418 static constexpr auto mbr_ptr{&SgSourceFile::p_module_list};
27419 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27420 using bind = Desc<SgSourceFile, SgModuleStatementPtrList SgSourceFile::*, &SgSourceFile::p_module_list>;
27421};
27422template <> struct describe_field_t<SgSourceFile,SgTokenPtrList,&SgSourceFile::p_token_list> {
27423 using parent = SgSourceFile;
27424 using field_type = SgTokenPtrList;
27425 static constexpr size_t position{2};
27426 static constexpr char const * const name{"token_list"};
27427 static constexpr char const * const typestr{"SgTokenPtrList"};
27428 static constexpr bool traverse{false};
27429 static constexpr auto mbr_ptr{&SgSourceFile::p_token_list};
27430 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27431 using bind = Desc<SgSourceFile, SgTokenPtrList SgSourceFile::*, &SgSourceFile::p_token_list>;
27432};
27433template <> struct describe_field_t<SgSourceFile,SgGlobal*,&SgSourceFile::p_temp_holding_scope> {
27434 using parent = SgSourceFile;
27435 using field_type = SgGlobal*;
27436 static constexpr size_t position{3};
27437 static constexpr char const * const name{"temp_holding_scope"};
27438 static constexpr char const * const typestr{"SgGlobal*"};
27439 static constexpr bool traverse{false};
27440 static constexpr auto mbr_ptr{&SgSourceFile::p_temp_holding_scope};
27441 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27442 using bind = Desc<SgSourceFile, SgGlobal* SgSourceFile::*, &SgSourceFile::p_temp_holding_scope>;
27443};
27444template <> struct describe_field_t<SgSourceFile,SgJavaPackageStatement *,&SgSourceFile::p_package> {
27445 using parent = SgSourceFile;
27447 static constexpr size_t position{4};
27448 static constexpr char const * const name{"package"};
27449 static constexpr char const * const typestr{"SgJavaPackageStatement *"};
27450 static constexpr bool traverse{true};
27451 static constexpr auto mbr_ptr{&SgSourceFile::p_package};
27452 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27453 using bind = Desc<SgSourceFile, SgJavaPackageStatement * SgSourceFile::*, &SgSourceFile::p_package>;
27454};
27455template <> struct describe_field_t<SgSourceFile,SgJavaImportStatementList*,&SgSourceFile::p_import_list> {
27456 using parent = SgSourceFile;
27458 static constexpr size_t position{5};
27459 static constexpr char const * const name{"import_list"};
27460 static constexpr char const * const typestr{"SgJavaImportStatementList*"};
27461 static constexpr bool traverse{true};
27462 static constexpr auto mbr_ptr{&SgSourceFile::p_import_list};
27463 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27464 using bind = Desc<SgSourceFile, SgJavaImportStatementList* SgSourceFile::*, &SgSourceFile::p_import_list>;
27465};
27466template <> struct describe_field_t<SgSourceFile,SgJavaClassDeclarationList*,&SgSourceFile::p_class_list> {
27467 using parent = SgSourceFile;
27469 static constexpr size_t position{6};
27470 static constexpr char const * const name{"class_list"};
27471 static constexpr char const * const typestr{"SgJavaClassDeclarationList*"};
27472 static constexpr bool traverse{true};
27473 static constexpr auto mbr_ptr{&SgSourceFile::p_class_list};
27474 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27475 using bind = Desc<SgSourceFile, SgJavaClassDeclarationList* SgSourceFile::*, &SgSourceFile::p_class_list>;
27476};
27477template <> struct describe_field_t<SgSourceFile,bool,&SgSourceFile::p_isHeaderFile> {
27478 using parent = SgSourceFile;
27479 using field_type = bool;
27480 static constexpr size_t position{7};
27481 static constexpr char const * const name{"isHeaderFile"};
27482 static constexpr char const * const typestr{"bool"};
27483 static constexpr bool traverse{false};
27484 static constexpr auto mbr_ptr{&SgSourceFile::p_isHeaderFile};
27485 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27486 using bind = Desc<SgSourceFile, bool SgSourceFile::*, &SgSourceFile::p_isHeaderFile>;
27487};
27488template <> struct describe_field_t<SgSourceFile,bool,&SgSourceFile::p_isHeaderFileIncludedMoreThanOnce> {
27489 using parent = SgSourceFile;
27490 using field_type = bool;
27491 static constexpr size_t position{8};
27492 static constexpr char const * const name{"isHeaderFileIncludedMoreThanOnce"};
27493 static constexpr char const * const typestr{"bool"};
27494 static constexpr bool traverse{false};
27495 static constexpr auto mbr_ptr{&SgSourceFile::p_isHeaderFileIncludedMoreThanOnce};
27496 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27497 using bind = Desc<SgSourceFile, bool SgSourceFile::*, &SgSourceFile::p_isHeaderFileIncludedMoreThanOnce>;
27498};
27499template <> struct describe_field_t<SgSourceFile,SgHeaderFileReport*,&SgSourceFile::p_headerFileReport> {
27500 using parent = SgSourceFile;
27502 static constexpr size_t position{9};
27503 static constexpr char const * const name{"headerFileReport"};
27504 static constexpr char const * const typestr{"SgHeaderFileReport*"};
27505 static constexpr bool traverse{false};
27506 static constexpr auto mbr_ptr{&SgSourceFile::p_headerFileReport};
27507 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27508 using bind = Desc<SgSourceFile, SgHeaderFileReport* SgSourceFile::*, &SgSourceFile::p_headerFileReport>;
27509};
27510template <> struct describe_field_t<SgSourceFile,SgStringList,&SgSourceFile::p_extraIncludeDirectorySpecifierBeforeList> {
27511 using parent = SgSourceFile;
27512 using field_type = SgStringList;
27513 static constexpr size_t position{10};
27514 static constexpr char const * const name{"extraIncludeDirectorySpecifierBeforeList"};
27515 static constexpr char const * const typestr{"SgStringList"};
27516 static constexpr bool traverse{false};
27517 static constexpr auto mbr_ptr{&SgSourceFile::p_extraIncludeDirectorySpecifierBeforeList};
27518 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27519 using bind = Desc<SgSourceFile, SgStringList SgSourceFile::*, &SgSourceFile::p_extraIncludeDirectorySpecifierBeforeList>;
27520};
27521template <> struct describe_field_t<SgSourceFile,SgStringList,&SgSourceFile::p_extraIncludeDirectorySpecifierAfterList> {
27522 using parent = SgSourceFile;
27523 using field_type = SgStringList;
27524 static constexpr size_t position{11};
27525 static constexpr char const * const name{"extraIncludeDirectorySpecifierAfterList"};
27526 static constexpr char const * const typestr{"SgStringList"};
27527 static constexpr bool traverse{false};
27528 static constexpr auto mbr_ptr{&SgSourceFile::p_extraIncludeDirectorySpecifierAfterList};
27529 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27530 using bind = Desc<SgSourceFile, SgStringList SgSourceFile::*, &SgSourceFile::p_extraIncludeDirectorySpecifierAfterList>;
27531};
27532template <> struct describe_field_t<SgSourceFile,SgIncludeFile*,&SgSourceFile::p_associated_include_file> {
27533 using parent = SgSourceFile;
27534 using field_type = SgIncludeFile*;
27535 static constexpr size_t position{12};
27536 static constexpr char const * const name{"associated_include_file"};
27537 static constexpr char const * const typestr{"SgIncludeFile*"};
27538 static constexpr bool traverse{false};
27539 static constexpr auto mbr_ptr{&SgSourceFile::p_associated_include_file};
27540 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27541 using bind = Desc<SgSourceFile, SgIncludeFile* SgSourceFile::*, &SgSourceFile::p_associated_include_file>;
27542};
27543template <> struct describe_field_t<SgSourceFile,bool,&SgSourceFile::p_processedToIncludeCppDirectivesAndComments> {
27544 using parent = SgSourceFile;
27545 using field_type = bool;
27546 static constexpr size_t position{13};
27547 static constexpr char const * const name{"processedToIncludeCppDirectivesAndComments"};
27548 static constexpr char const * const typestr{"bool"};
27549 static constexpr bool traverse{false};
27550 static constexpr auto mbr_ptr{&SgSourceFile::p_processedToIncludeCppDirectivesAndComments};
27551 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27552 using bind = Desc<SgSourceFile, bool SgSourceFile::*, &SgSourceFile::p_processedToIncludeCppDirectivesAndComments>;
27553};
27554template <> struct describe_field_t<SgSourceFile,SgNodePtrList,&SgSourceFile::p_extra_nodes_for_namequal_init> {
27555 using parent = SgSourceFile;
27556 using field_type = SgNodePtrList;
27557 static constexpr size_t position{14};
27558 static constexpr char const * const name{"extra_nodes_for_namequal_init"};
27559 static constexpr char const * const typestr{"SgNodePtrList"};
27560 static constexpr bool traverse{false};
27561 static constexpr auto mbr_ptr{&SgSourceFile::p_extra_nodes_for_namequal_init};
27562 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27563 using bind = Desc<SgSourceFile, SgNodePtrList SgSourceFile::*, &SgSourceFile::p_extra_nodes_for_namequal_init>;
27564};
27565template <> struct describe_field_t<SgSourceFile,bool,&SgSourceFile::p_isDynamicLibrary> {
27566 using parent = SgSourceFile;
27567 using field_type = bool;
27568 static constexpr size_t position{15};
27569 static constexpr char const * const name{"isDynamicLibrary"};
27570 static constexpr char const * const typestr{"bool"};
27571 static constexpr bool traverse{false};
27572 static constexpr auto mbr_ptr{&SgSourceFile::p_isDynamicLibrary};
27573 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27574 using bind = Desc<SgSourceFile, bool SgSourceFile::*, &SgSourceFile::p_isDynamicLibrary>;
27575};
27576template <> struct describe_field_t<SgSourceFile,SgStatement*,&SgSourceFile::p_firstStatement> {
27577 using parent = SgSourceFile;
27578 using field_type = SgStatement*;
27579 static constexpr size_t position{16};
27580 static constexpr char const * const name{"firstStatement"};
27581 static constexpr char const * const typestr{"SgStatement*"};
27582 static constexpr bool traverse{false};
27583 static constexpr auto mbr_ptr{&SgSourceFile::p_firstStatement};
27584 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27585 using bind = Desc<SgSourceFile, SgStatement* SgSourceFile::*, &SgSourceFile::p_firstStatement>;
27586};
27587template <> struct describe_field_t<SgSourceFile,SgStatement*,&SgSourceFile::p_lastStatement> {
27588 using parent = SgSourceFile;
27589 using field_type = SgStatement*;
27590 static constexpr size_t position{17};
27591 static constexpr char const * const name{"lastStatement"};
27592 static constexpr char const * const typestr{"SgStatement*"};
27593 static constexpr bool traverse{false};
27594 static constexpr auto mbr_ptr{&SgSourceFile::p_lastStatement};
27595 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27596 using bind = Desc<SgSourceFile, SgStatement* SgSourceFile::*, &SgSourceFile::p_lastStatement>;
27597};
27598template <> struct describe_node_t<SgSourceFile> {
27599 using node = SgSourceFile;
27600 using base = SgFile;
27601 static constexpr char const * const name{"SourceFile"};
27602 static constexpr unsigned long variant{688};
27603 static constexpr bool concrete{true};
27604 using subclasses_t = mp::List<>;
27605 using fields_t = mp::List<describe_field_t<SgSourceFile,SgGlobal*,&SgSourceFile::p_globalScope>, describe_field_t<SgSourceFile,SgModuleStatementPtrList,&SgSourceFile::p_module_list>, describe_field_t<SgSourceFile,SgTokenPtrList,&SgSourceFile::p_token_list>, describe_field_t<SgSourceFile,SgGlobal*,&SgSourceFile::p_temp_holding_scope>, describe_field_t<SgSourceFile,SgJavaPackageStatement *,&SgSourceFile::p_package>, describe_field_t<SgSourceFile,SgJavaImportStatementList*,&SgSourceFile::p_import_list>, describe_field_t<SgSourceFile,SgJavaClassDeclarationList*,&SgSourceFile::p_class_list>, describe_field_t<SgSourceFile,bool,&SgSourceFile::p_isHeaderFile>, describe_field_t<SgSourceFile,bool,&SgSourceFile::p_isHeaderFileIncludedMoreThanOnce>, describe_field_t<SgSourceFile,SgHeaderFileReport*,&SgSourceFile::p_headerFileReport>, describe_field_t<SgSourceFile,SgStringList,&SgSourceFile::p_extraIncludeDirectorySpecifierBeforeList>, describe_field_t<SgSourceFile,SgStringList,&SgSourceFile::p_extraIncludeDirectorySpecifierAfterList>, describe_field_t<SgSourceFile,SgIncludeFile*,&SgSourceFile::p_associated_include_file>, describe_field_t<SgSourceFile,bool,&SgSourceFile::p_processedToIncludeCppDirectivesAndComments>, describe_field_t<SgSourceFile,SgNodePtrList,&SgSourceFile::p_extra_nodes_for_namequal_init>, describe_field_t<SgSourceFile,bool,&SgSourceFile::p_isDynamicLibrary>, describe_field_t<SgSourceFile,SgStatement*,&SgSourceFile::p_firstStatement>, describe_field_t<SgSourceFile,SgStatement*,&SgSourceFile::p_lastStatement>>;
27606};
27607template <> struct node_from_variant_t<688> { using type = SgSourceFile; };
27608
27609// Class: SpaceshipOp
27610template <> struct describe_node_t<SgSpaceshipOp> {
27611 using node = SgSpaceshipOp;
27612 using base = SgBinaryOp;
27613 static constexpr char const * const name{"SpaceshipOp"};
27614 static constexpr unsigned long variant{689};
27615 static constexpr bool concrete{true};
27616 using subclasses_t = mp::List<>;
27617 using fields_t = mp::List<>;
27618};
27619template <> struct node_from_variant_t<689> { using type = SgSpaceshipOp; };
27620
27621// Class: SpawnStmt
27622template <> struct describe_field_t<SgSpawnStmt,SgFunctionCallExp*,&SgSpawnStmt::p_the_func> {
27623 using parent = SgSpawnStmt;
27625 static constexpr size_t position{0};
27626 static constexpr char const * const name{"the_func"};
27627 static constexpr char const * const typestr{"SgFunctionCallExp*"};
27628 static constexpr bool traverse{true};
27629 static constexpr auto mbr_ptr{&SgSpawnStmt::p_the_func};
27630 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27631 using bind = Desc<SgSpawnStmt, SgFunctionCallExp* SgSpawnStmt::*, &SgSpawnStmt::p_the_func>;
27632};
27633template <> struct describe_node_t<SgSpawnStmt> {
27634 using node = SgSpawnStmt;
27635 using base = SgStatement;
27636 static constexpr char const * const name{"SpawnStmt"};
27637 static constexpr unsigned long variant{690};
27638 static constexpr bool concrete{true};
27639 using subclasses_t = mp::List<>;
27641};
27642template <> struct node_from_variant_t<690> { using type = SgSpawnStmt; };
27643
27644// Class: SyncAllStatement
27646 using node = SgSyncAllStatement;
27648 static constexpr char const * const name{"SyncAllStatement"};
27649 static constexpr unsigned long variant{691};
27650 static constexpr bool concrete{true};
27651 using subclasses_t = mp::List<>;
27652 using fields_t = mp::List<>;
27653};
27654template <> struct node_from_variant_t<691> { using type = SgSyncAllStatement; };
27655
27656// Class: SyncImagesStatement
27657template <> struct describe_field_t<SgSyncImagesStatement,SgExpression*,&SgSyncImagesStatement::p_image_set> {
27659 using field_type = SgExpression*;
27660 static constexpr size_t position{0};
27661 static constexpr char const * const name{"image_set"};
27662 static constexpr char const * const typestr{"SgExpression*"};
27663 static constexpr bool traverse{true};
27664 static constexpr auto mbr_ptr{&SgSyncImagesStatement::p_image_set};
27665 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27666 using bind = Desc<SgSyncImagesStatement, SgExpression* SgSyncImagesStatement::*, &SgSyncImagesStatement::p_image_set>;
27667};
27671 static constexpr char const * const name{"SyncImagesStatement"};
27672 static constexpr unsigned long variant{692};
27673 static constexpr bool concrete{true};
27674 using subclasses_t = mp::List<>;
27676};
27677template <> struct node_from_variant_t<692> { using type = SgSyncImagesStatement; };
27678
27679// Class: SyncMemoryStatement
27683 static constexpr char const * const name{"SyncMemoryStatement"};
27684 static constexpr unsigned long variant{693};
27685 static constexpr bool concrete{true};
27686 using subclasses_t = mp::List<>;
27687 using fields_t = mp::List<>;
27688};
27689template <> struct node_from_variant_t<693> { using type = SgSyncMemoryStatement; };
27690
27691// Class: SyncTeamStatement
27692template <> struct describe_field_t<SgSyncTeamStatement,SgExpression*,&SgSyncTeamStatement::p_team_value> {
27694 using field_type = SgExpression*;
27695 static constexpr size_t position{0};
27696 static constexpr char const * const name{"team_value"};
27697 static constexpr char const * const typestr{"SgExpression*"};
27698 static constexpr bool traverse{true};
27699 static constexpr auto mbr_ptr{&SgSyncTeamStatement::p_team_value};
27700 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27701 using bind = Desc<SgSyncTeamStatement, SgExpression* SgSyncTeamStatement::*, &SgSyncTeamStatement::p_team_value>;
27702};
27704 using node = SgSyncTeamStatement;
27706 static constexpr char const * const name{"SyncTeamStatement"};
27707 static constexpr unsigned long variant{694};
27708 static constexpr bool concrete{true};
27709 using subclasses_t = mp::List<>;
27711};
27712template <> struct node_from_variant_t<694> { using type = SgSyncTeamStatement; };
27713
27714// Class: LockStatement
27715template <> struct describe_field_t<SgLockStatement,SgExpression*,&SgLockStatement::p_lock_variable> {
27716 using parent = SgLockStatement;
27717 using field_type = SgExpression*;
27718 static constexpr size_t position{0};
27719 static constexpr char const * const name{"lock_variable"};
27720 static constexpr char const * const typestr{"SgExpression*"};
27721 static constexpr bool traverse{true};
27722 static constexpr auto mbr_ptr{&SgLockStatement::p_lock_variable};
27723 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27724 using bind = Desc<SgLockStatement, SgExpression* SgLockStatement::*, &SgLockStatement::p_lock_variable>;
27725};
27727 using node = SgLockStatement;
27729 static constexpr char const * const name{"LockStatement"};
27730 static constexpr unsigned long variant{695};
27731 static constexpr bool concrete{true};
27732 using subclasses_t = mp::List<>;
27734};
27735template <> struct node_from_variant_t<695> { using type = SgLockStatement; };
27736
27737// Class: UnlockStatement
27738template <> struct describe_field_t<SgUnlockStatement,SgExpression*,&SgUnlockStatement::p_lock_variable> {
27739 using parent = SgUnlockStatement;
27740 using field_type = SgExpression*;
27741 static constexpr size_t position{0};
27742 static constexpr char const * const name{"lock_variable"};
27743 static constexpr char const * const typestr{"SgExpression*"};
27744 static constexpr bool traverse{true};
27745 static constexpr auto mbr_ptr{&SgUnlockStatement::p_lock_variable};
27746 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27747 using bind = Desc<SgUnlockStatement, SgExpression* SgUnlockStatement::*, &SgUnlockStatement::p_lock_variable>;
27748};
27750 using node = SgUnlockStatement;
27752 static constexpr char const * const name{"UnlockStatement"};
27753 static constexpr unsigned long variant{696};
27754 static constexpr bool concrete{true};
27755 using subclasses_t = mp::List<>;
27757};
27758template <> struct node_from_variant_t<696> { using type = SgUnlockStatement; };
27759
27760// Class: JavaThrowStatement
27761template <> struct describe_field_t<SgJavaThrowStatement,SgThrowOp*,&SgJavaThrowStatement::p_throwOp> {
27763 using field_type = SgThrowOp*;
27764 static constexpr size_t position{0};
27765 static constexpr char const * const name{"throwOp"};
27766 static constexpr char const * const typestr{"SgThrowOp*"};
27767 static constexpr bool traverse{false};
27768 static constexpr auto mbr_ptr{&SgJavaThrowStatement::p_throwOp};
27769 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27770 using bind = Desc<SgJavaThrowStatement, SgThrowOp* SgJavaThrowStatement::*, &SgJavaThrowStatement::p_throwOp>;
27771};
27773 using node = SgJavaThrowStatement;
27774 using base = SgStatement;
27775 static constexpr char const * const name{"JavaThrowStatement"};
27776 static constexpr unsigned long variant{697};
27777 static constexpr bool concrete{true};
27778 using subclasses_t = mp::List<>;
27780};
27781template <> struct node_from_variant_t<697> { using type = SgJavaThrowStatement; };
27782
27783// Class: JavaForEachStatement
27784template <> struct describe_field_t<SgJavaForEachStatement,SgVariableDeclaration*,&SgJavaForEachStatement::p_element> {
27787 static constexpr size_t position{0};
27788 static constexpr char const * const name{"element"};
27789 static constexpr char const * const typestr{"SgVariableDeclaration*"};
27790 static constexpr bool traverse{true};
27791 static constexpr auto mbr_ptr{&SgJavaForEachStatement::p_element};
27792 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27793 using bind = Desc<SgJavaForEachStatement, SgVariableDeclaration* SgJavaForEachStatement::*, &SgJavaForEachStatement::p_element>;
27794};
27795template <> struct describe_field_t<SgJavaForEachStatement,SgExpression*,&SgJavaForEachStatement::p_collection> {
27797 using field_type = SgExpression*;
27798 static constexpr size_t position{1};
27799 static constexpr char const * const name{"collection"};
27800 static constexpr char const * const typestr{"SgExpression*"};
27801 static constexpr bool traverse{true};
27802 static constexpr auto mbr_ptr{&SgJavaForEachStatement::p_collection};
27803 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27804 using bind = Desc<SgJavaForEachStatement, SgExpression* SgJavaForEachStatement::*, &SgJavaForEachStatement::p_collection>;
27805};
27806template <> struct describe_field_t<SgJavaForEachStatement,SgStatement*,&SgJavaForEachStatement::p_loop_body> {
27808 using field_type = SgStatement*;
27809 static constexpr size_t position{2};
27810 static constexpr char const * const name{"loop_body"};
27811 static constexpr char const * const typestr{"SgStatement*"};
27812 static constexpr bool traverse{true};
27813 static constexpr auto mbr_ptr{&SgJavaForEachStatement::p_loop_body};
27814 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27815 using bind = Desc<SgJavaForEachStatement, SgStatement* SgJavaForEachStatement::*, &SgJavaForEachStatement::p_loop_body>;
27816};
27819 using base = SgScopeStatement;
27820 static constexpr char const * const name{"JavaForEachStatement"};
27821 static constexpr unsigned long variant{698};
27822 static constexpr bool concrete{true};
27823 using subclasses_t = mp::List<>;
27825};
27826template <> struct node_from_variant_t<698> { using type = SgJavaForEachStatement; };
27827
27828// Class: JavaSynchronizedStatement
27829template <> struct describe_field_t<SgJavaSynchronizedStatement,SgExpression*,&SgJavaSynchronizedStatement::p_expression> {
27831 using field_type = SgExpression*;
27832 static constexpr size_t position{0};
27833 static constexpr char const * const name{"expression"};
27834 static constexpr char const * const typestr{"SgExpression*"};
27835 static constexpr bool traverse{true};
27836 static constexpr auto mbr_ptr{&SgJavaSynchronizedStatement::p_expression};
27837 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27838 using bind = Desc<SgJavaSynchronizedStatement, SgExpression* SgJavaSynchronizedStatement::*, &SgJavaSynchronizedStatement::p_expression>;
27839};
27840template <> struct describe_field_t<SgJavaSynchronizedStatement,SgStatement*,&SgJavaSynchronizedStatement::p_body> {
27842 using field_type = SgStatement*;
27843 static constexpr size_t position{1};
27844 static constexpr char const * const name{"body"};
27845 static constexpr char const * const typestr{"SgStatement*"};
27846 static constexpr bool traverse{true};
27847 static constexpr auto mbr_ptr{&SgJavaSynchronizedStatement::p_body};
27848 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27849 using bind = Desc<SgJavaSynchronizedStatement, SgStatement* SgJavaSynchronizedStatement::*, &SgJavaSynchronizedStatement::p_body>;
27850};
27853 using base = SgStatement;
27854 static constexpr char const * const name{"JavaSynchronizedStatement"};
27855 static constexpr unsigned long variant{699};
27856 static constexpr bool concrete{true};
27857 using subclasses_t = mp::List<>;
27859};
27860template <> struct node_from_variant_t<699> { using type = SgJavaSynchronizedStatement; };
27861
27862// Class: JavaParameterizedType
27863template <> struct describe_field_t<SgJavaParameterizedType,SgNamedType*,&SgJavaParameterizedType::p_raw_type> {
27865 using field_type = SgNamedType*;
27866 static constexpr size_t position{0};
27867 static constexpr char const * const name{"raw_type"};
27868 static constexpr char const * const typestr{"SgNamedType*"};
27869 static constexpr bool traverse{false};
27870 static constexpr auto mbr_ptr{&SgJavaParameterizedType::p_raw_type};
27871 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27872 using bind = Desc<SgJavaParameterizedType, SgNamedType* SgJavaParameterizedType::*, &SgJavaParameterizedType::p_raw_type>;
27873};
27874template <> struct describe_field_t<SgJavaParameterizedType,SgTemplateParameterList*,&SgJavaParameterizedType::p_type_list> {
27877 static constexpr size_t position{1};
27878 static constexpr char const * const name{"type_list"};
27879 static constexpr char const * const typestr{"SgTemplateParameterList*"};
27880 static constexpr bool traverse{false};
27881 static constexpr auto mbr_ptr{&SgJavaParameterizedType::p_type_list};
27882 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27883 using bind = Desc<SgJavaParameterizedType, SgTemplateParameterList* SgJavaParameterizedType::*, &SgJavaParameterizedType::p_type_list>;
27884};
27887 using base = SgNamedType;
27888 static constexpr char const * const name{"JavaParameterizedType"};
27889 static constexpr unsigned long variant{700};
27890 static constexpr bool concrete{true};
27891 using subclasses_t = mp::List<>;
27893};
27894template <> struct node_from_variant_t<700> { using type = SgJavaParameterizedType; };
27895
27896// Class: JavaWildcardType
27897template <> struct describe_field_t<SgJavaWildcardType,SgType*,&SgJavaWildcardType::p_bound_type> {
27898 using parent = SgJavaWildcardType;
27899 using field_type = SgType*;
27900 static constexpr size_t position{0};
27901 static constexpr char const * const name{"bound_type"};
27902 static constexpr char const * const typestr{"SgType*"};
27903 static constexpr bool traverse{false};
27904 static constexpr auto mbr_ptr{&SgJavaWildcardType::p_bound_type};
27905 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27906 using bind = Desc<SgJavaWildcardType, SgType* SgJavaWildcardType::*, &SgJavaWildcardType::p_bound_type>;
27907};
27908template <> struct describe_field_t<SgJavaWildcardType,bool,&SgJavaWildcardType::p_is_unbound> {
27909 using parent = SgJavaWildcardType;
27910 using field_type = bool;
27911 static constexpr size_t position{1};
27912 static constexpr char const * const name{"is_unbound"};
27913 static constexpr char const * const typestr{"bool"};
27914 static constexpr bool traverse{false};
27915 static constexpr auto mbr_ptr{&SgJavaWildcardType::p_is_unbound};
27916 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27917 using bind = Desc<SgJavaWildcardType, bool SgJavaWildcardType::*, &SgJavaWildcardType::p_is_unbound>;
27918};
27919template <> struct describe_field_t<SgJavaWildcardType,bool,&SgJavaWildcardType::p_has_extends> {
27920 using parent = SgJavaWildcardType;
27921 using field_type = bool;
27922 static constexpr size_t position{2};
27923 static constexpr char const * const name{"has_extends"};
27924 static constexpr char const * const typestr{"bool"};
27925 static constexpr bool traverse{false};
27926 static constexpr auto mbr_ptr{&SgJavaWildcardType::p_has_extends};
27927 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27928 using bind = Desc<SgJavaWildcardType, bool SgJavaWildcardType::*, &SgJavaWildcardType::p_has_extends>;
27929};
27930template <> struct describe_field_t<SgJavaWildcardType,bool,&SgJavaWildcardType::p_has_super> {
27931 using parent = SgJavaWildcardType;
27932 using field_type = bool;
27933 static constexpr size_t position{3};
27934 static constexpr char const * const name{"has_super"};
27935 static constexpr char const * const typestr{"bool"};
27936 static constexpr bool traverse{false};
27937 static constexpr auto mbr_ptr{&SgJavaWildcardType::p_has_super};
27938 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27939 using bind = Desc<SgJavaWildcardType, bool SgJavaWildcardType::*, &SgJavaWildcardType::p_has_super>;
27940};
27950template <> struct node_from_variant_t<701> { using type = SgJavaWildcardType; };
27951
27952// Class: ProcessControlStatement
27953template <> struct describe_field_t<SgProcessControlStatement,SgProcessControlStatement::control_enum,&SgProcessControlStatement::p_control_kind> {
27955 using field_type = SgProcessControlStatement::control_enum;
27956 static constexpr size_t position{0};
27957 static constexpr char const * const name{"control_kind"};
27958 static constexpr char const * const typestr{"SgProcessControlStatement::control_enum"};
27959 static constexpr bool traverse{false};
27960 static constexpr auto mbr_ptr{&SgProcessControlStatement::p_control_kind};
27961 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27962 using bind = Desc<SgProcessControlStatement, SgProcessControlStatement::control_enum SgProcessControlStatement::*, &SgProcessControlStatement::p_control_kind>;
27963};
27964template <> struct describe_field_t<SgProcessControlStatement,SgExpression*,&SgProcessControlStatement::p_code> {
27966 using field_type = SgExpression*;
27967 static constexpr size_t position{1};
27968 static constexpr char const * const name{"code"};
27969 static constexpr char const * const typestr{"SgExpression*"};
27970 static constexpr bool traverse{true};
27971 static constexpr auto mbr_ptr{&SgProcessControlStatement::p_code};
27972 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27973 using bind = Desc<SgProcessControlStatement, SgExpression* SgProcessControlStatement::*, &SgProcessControlStatement::p_code>;
27974};
27975template <> struct describe_field_t<SgProcessControlStatement,SgExpression*,&SgProcessControlStatement::p_quiet> {
27977 using field_type = SgExpression*;
27978 static constexpr size_t position{2};
27979 static constexpr char const * const name{"quiet"};
27980 static constexpr char const * const typestr{"SgExpression*"};
27981 static constexpr bool traverse{true};
27982 static constexpr auto mbr_ptr{&SgProcessControlStatement::p_quiet};
27983 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
27984 using bind = Desc<SgProcessControlStatement, SgExpression* SgProcessControlStatement::*, &SgProcessControlStatement::p_quiet>;
27985};
27995template <> struct node_from_variant_t<702> { using type = SgProcessControlStatement; };
27996
27997// Class: SpecialFunctionModifier
27998template <> struct describe_field_t<SgSpecialFunctionModifier,SgBitVector,&SgSpecialFunctionModifier::p_modifierVector> {
28000 using field_type = SgBitVector;
28001 static constexpr size_t position{0};
28002 static constexpr char const * const name{"modifierVector"};
28003 static constexpr char const * const typestr{"SgBitVector"};
28004 static constexpr bool traverse{false};
28005 static constexpr auto mbr_ptr{&SgSpecialFunctionModifier::p_modifierVector};
28006 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28007 using bind = Desc<SgSpecialFunctionModifier, SgBitVector SgSpecialFunctionModifier::*, &SgSpecialFunctionModifier::p_modifierVector>;
28008};
28011 using base = SgModifier;
28012 static constexpr char const * const name{"SpecialFunctionModifier"};
28013 static constexpr unsigned long variant{703};
28014 static constexpr bool concrete{true};
28015 using subclasses_t = mp::List<>;
28017};
28018template <> struct node_from_variant_t<703> { using type = SgSpecialFunctionModifier; };
28019
28020// Class: Statement
28021template <> struct describe_field_t<SgStatement,SgLabelRefExp*,&SgStatement::p_numeric_label> {
28022 using parent = SgStatement;
28023 using field_type = SgLabelRefExp*;
28024 static constexpr size_t position{0};
28025 static constexpr char const * const name{"numeric_label"};
28026 static constexpr char const * const typestr{"SgLabelRefExp*"};
28027 static constexpr bool traverse{false};
28028 static constexpr auto mbr_ptr{&SgStatement::p_numeric_label};
28029 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28030 using bind = Desc<SgStatement, SgLabelRefExp* SgStatement::*, &SgStatement::p_numeric_label>;
28031};
28032template <> struct describe_field_t<SgStatement,int,&SgStatement::p_source_sequence_value> {
28033 using parent = SgStatement;
28034 using field_type = int;
28035 static constexpr size_t position{1};
28036 static constexpr char const * const name{"source_sequence_value"};
28037 static constexpr char const * const typestr{"int"};
28038 static constexpr bool traverse{false};
28039 static constexpr auto mbr_ptr{&SgStatement::p_source_sequence_value};
28040 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28041 using bind = Desc<SgStatement, int SgStatement::*, &SgStatement::p_source_sequence_value>;
28042};
28043template <> struct describe_node_t<SgStatement> {
28044 using node = SgStatement;
28045 using base = SgLocatedNode;
28046 static constexpr char const * const name{"Statement"};
28047 static constexpr unsigned long variant{704};
28048 static constexpr bool concrete{false};
28051};
28052template <> struct node_from_variant_t<704> { using type = SgStatement; };
28053
28054// Class: StaticAssertionDeclaration
28055template <> struct describe_field_t<SgStaticAssertionDeclaration,SgExpression*,&SgStaticAssertionDeclaration::p_condition> {
28057 using field_type = SgExpression*;
28058 static constexpr size_t position{0};
28059 static constexpr char const * const name{"condition"};
28060 static constexpr char const * const typestr{"SgExpression*"};
28061 static constexpr bool traverse{true};
28062 static constexpr auto mbr_ptr{&SgStaticAssertionDeclaration::p_condition};
28063 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28064 using bind = Desc<SgStaticAssertionDeclaration, SgExpression* SgStaticAssertionDeclaration::*, &SgStaticAssertionDeclaration::p_condition>;
28065};
28066template <> struct describe_field_t<SgStaticAssertionDeclaration,SgName,&SgStaticAssertionDeclaration::p_string_literal> {
28068 using field_type = SgName;
28069 static constexpr size_t position{1};
28070 static constexpr char const * const name{"string_literal"};
28071 static constexpr char const * const typestr{"SgName"};
28072 static constexpr bool traverse{false};
28073 static constexpr auto mbr_ptr{&SgStaticAssertionDeclaration::p_string_literal};
28074 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28075 using bind = Desc<SgStaticAssertionDeclaration, SgName SgStaticAssertionDeclaration::*, &SgStaticAssertionDeclaration::p_string_literal>;
28076};
28080 static constexpr char const * const name{"StaticAssertionDeclaration"};
28081 static constexpr unsigned long variant{705};
28082 static constexpr bool concrete{true};
28083 using subclasses_t = mp::List<>;
28085};
28086template <> struct node_from_variant_t<705> { using type = SgStaticAssertionDeclaration; };
28087
28088// Class: StmtDeclarationStatement
28091 using field_type = SgStatement*;
28092 static constexpr size_t position{0};
28093 static constexpr char const * const name{"statement"};
28094 static constexpr char const * const typestr{"SgStatement*"};
28095 static constexpr bool traverse{true};
28096 static constexpr auto mbr_ptr{&SgStmtDeclarationStatement::p_statement};
28097 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28098 using bind = Desc<SgStmtDeclarationStatement, SgStatement* SgStmtDeclarationStatement::*, &SgStmtDeclarationStatement::p_statement>;
28099};
28103 static constexpr char const * const name{"StmtDeclarationStatement"};
28104 static constexpr unsigned long variant{706};
28105 static constexpr bool concrete{true};
28106 using subclasses_t = mp::List<>;
28108};
28109template <> struct node_from_variant_t<706> { using type = SgStmtDeclarationStatement; };
28110
28111// Class: StatementExpression
28114 using field_type = SgStatement*;
28115 static constexpr size_t position{0};
28116 static constexpr char const * const name{"statement"};
28117 static constexpr char const * const typestr{"SgStatement*"};
28118 static constexpr bool traverse{true};
28119 static constexpr auto mbr_ptr{&SgStatementExpression::p_statement};
28120 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28121 using bind = Desc<SgStatementExpression, SgStatement* SgStatementExpression::*, &SgStatementExpression::p_statement>;
28122};
28125 using base = SgExpression;
28126 static constexpr char const * const name{"StatementExpression"};
28127 static constexpr unsigned long variant{707};
28128 static constexpr bool concrete{true};
28129 using subclasses_t = mp::List<>;
28131};
28132template <> struct node_from_variant_t<707> { using type = SgStatementExpression; };
28133
28134// Class: StatementFunctionStatement
28135template <> struct describe_field_t<SgStatementFunctionStatement,SgFunctionDeclaration*,&SgStatementFunctionStatement::p_function> {
28138 static constexpr size_t position{0};
28139 static constexpr char const * const name{"function"};
28140 static constexpr char const * const typestr{"SgFunctionDeclaration*"};
28141 static constexpr bool traverse{true};
28142 static constexpr auto mbr_ptr{&SgStatementFunctionStatement::p_function};
28143 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28144 using bind = Desc<SgStatementFunctionStatement, SgFunctionDeclaration* SgStatementFunctionStatement::*, &SgStatementFunctionStatement::p_function>;
28145};
28146template <> struct describe_field_t<SgStatementFunctionStatement,SgExpression*,&SgStatementFunctionStatement::p_expression> {
28148 using field_type = SgExpression*;
28149 static constexpr size_t position{1};
28150 static constexpr char const * const name{"expression"};
28151 static constexpr char const * const typestr{"SgExpression*"};
28152 static constexpr bool traverse{true};
28153 static constexpr auto mbr_ptr{&SgStatementFunctionStatement::p_expression};
28154 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28155 using bind = Desc<SgStatementFunctionStatement, SgExpression* SgStatementFunctionStatement::*, &SgStatementFunctionStatement::p_expression>;
28156};
28160 static constexpr char const * const name{"StatementFunctionStatement"};
28161 static constexpr unsigned long variant{708};
28162 static constexpr bool concrete{true};
28163 using subclasses_t = mp::List<>;
28165};
28166template <> struct node_from_variant_t<708> { using type = SgStatementFunctionStatement; };
28167
28168// Class: StorageModifier
28169template <> struct describe_field_t<SgStorageModifier,SgStorageModifier::storage_modifier_enum,&SgStorageModifier::p_modifier> {
28170 using parent = SgStorageModifier;
28172 static constexpr size_t position{0};
28173 static constexpr char const * const name{"modifier"};
28174 static constexpr char const * const typestr{"SgStorageModifier::storage_modifier_enum"};
28175 static constexpr bool traverse{false};
28176 static constexpr auto mbr_ptr{&SgStorageModifier::p_modifier};
28177 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28178 using bind = Desc<SgStorageModifier, SgStorageModifier::storage_modifier_enum SgStorageModifier::*, &SgStorageModifier::p_modifier>;
28179};
28180template <> struct describe_field_t<SgStorageModifier,bool,&SgStorageModifier::p_thread_local_storage> {
28181 using parent = SgStorageModifier;
28182 using field_type = bool;
28183 static constexpr size_t position{1};
28184 static constexpr char const * const name{"thread_local_storage"};
28185 static constexpr char const * const typestr{"bool"};
28186 static constexpr bool traverse{false};
28187 static constexpr auto mbr_ptr{&SgStorageModifier::p_thread_local_storage};
28188 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28189 using bind = Desc<SgStorageModifier, bool SgStorageModifier::*, &SgStorageModifier::p_thread_local_storage>;
28190};
28192 using node = SgStorageModifier;
28193 using base = SgModifier;
28194 static constexpr char const * const name{"StorageModifier"};
28195 static constexpr unsigned long variant{709};
28196 static constexpr bool concrete{true};
28197 using subclasses_t = mp::List<>;
28199};
28200template <> struct node_from_variant_t<709> { using type = SgStorageModifier; };
28201
28202// Class: StringConversion
28204 using parent = SgStringConversion;
28205 using field_type = SgExpression*;
28206 static constexpr size_t position{0};
28207 static constexpr char const * const name{"expression"};
28208 static constexpr char const * const typestr{"SgExpression*"};
28209 static constexpr bool traverse{true};
28210 static constexpr auto mbr_ptr{&SgStringConversion::p_expression};
28211 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28212 using bind = Desc<SgStringConversion, SgExpression* SgStringConversion::*, &SgStringConversion::p_expression>;
28213};
28215 using node = SgStringConversion;
28216 using base = SgExpression;
28217 static constexpr char const * const name{"StringConversion"};
28218 static constexpr unsigned long variant{710};
28219 static constexpr bool concrete{true};
28220 using subclasses_t = mp::List<>;
28222};
28223template <> struct node_from_variant_t<710> { using type = SgStringConversion; };
28224
28225// Class: StringKeyedBidirectionalGraph
28228 using base = SgBidirectionalGraph;
28229 static constexpr char const * const name{"StringKeyedBidirectionalGraph"};
28230 static constexpr unsigned long variant{711};
28231 static constexpr bool concrete{true};
28232 using subclasses_t = mp::List<>;
28233 using fields_t = mp::List<>;
28234};
28235template <> struct node_from_variant_t<711> { using type = SgStringKeyedBidirectionalGraph; };
28236
28237// Class: StringVal
28238template <> struct describe_field_t<SgStringVal,std::string,&SgStringVal::p_value> {
28239 using parent = SgStringVal;
28240 using field_type = std::string;
28241 static constexpr size_t position{0};
28242 static constexpr char const * const name{"value"};
28243 static constexpr char const * const typestr{"std::string"};
28244 static constexpr bool traverse{false};
28245 static constexpr auto mbr_ptr{&SgStringVal::p_value};
28246 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28247 using bind = Desc<SgStringVal, std::string SgStringVal::*, &SgStringVal::p_value>;
28248};
28249template <> struct describe_field_t<SgStringVal,bool,&SgStringVal::p_wcharString> {
28250 using parent = SgStringVal;
28251 using field_type = bool;
28252 static constexpr size_t position{1};
28253 static constexpr char const * const name{"wcharString"};
28254 static constexpr char const * const typestr{"bool"};
28255 static constexpr bool traverse{false};
28256 static constexpr auto mbr_ptr{&SgStringVal::p_wcharString};
28257 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28258 using bind = Desc<SgStringVal, bool SgStringVal::*, &SgStringVal::p_wcharString>;
28259};
28260template <> struct describe_field_t<SgStringVal,char,&SgStringVal::p_stringDelimiter> {
28261 using parent = SgStringVal;
28262 using field_type = char;
28263 static constexpr size_t position{2};
28264 static constexpr char const * const name{"stringDelimiter"};
28265 static constexpr char const * const typestr{"char"};
28266 static constexpr bool traverse{false};
28267 static constexpr auto mbr_ptr{&SgStringVal::p_stringDelimiter};
28268 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28269 using bind = Desc<SgStringVal, char SgStringVal::*, &SgStringVal::p_stringDelimiter>;
28270};
28271template <> struct describe_field_t<SgStringVal,bool,&SgStringVal::p_is16bitString> {
28272 using parent = SgStringVal;
28273 using field_type = bool;
28274 static constexpr size_t position{3};
28275 static constexpr char const * const name{"is16bitString"};
28276 static constexpr char const * const typestr{"bool"};
28277 static constexpr bool traverse{false};
28278 static constexpr auto mbr_ptr{&SgStringVal::p_is16bitString};
28279 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28280 using bind = Desc<SgStringVal, bool SgStringVal::*, &SgStringVal::p_is16bitString>;
28281};
28282template <> struct describe_field_t<SgStringVal,bool,&SgStringVal::p_is32bitString> {
28283 using parent = SgStringVal;
28284 using field_type = bool;
28285 static constexpr size_t position{4};
28286 static constexpr char const * const name{"is32bitString"};
28287 static constexpr char const * const typestr{"bool"};
28288 static constexpr bool traverse{false};
28289 static constexpr auto mbr_ptr{&SgStringVal::p_is32bitString};
28290 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28291 using bind = Desc<SgStringVal, bool SgStringVal::*, &SgStringVal::p_is32bitString>;
28292};
28293template <> struct describe_field_t<SgStringVal,bool,&SgStringVal::p_isRawString> {
28294 using parent = SgStringVal;
28295 using field_type = bool;
28296 static constexpr size_t position{5};
28297 static constexpr char const * const name{"isRawString"};
28298 static constexpr char const * const typestr{"bool"};
28299 static constexpr bool traverse{false};
28300 static constexpr auto mbr_ptr{&SgStringVal::p_isRawString};
28301 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28302 using bind = Desc<SgStringVal, bool SgStringVal::*, &SgStringVal::p_isRawString>;
28303};
28304template <> struct describe_field_t<SgStringVal,std::string,&SgStringVal::p_raw_string_value> {
28305 using parent = SgStringVal;
28306 using field_type = std::string;
28307 static constexpr size_t position{6};
28308 static constexpr char const * const name{"raw_string_value"};
28309 static constexpr char const * const typestr{"std::string"};
28310 static constexpr bool traverse{false};
28311 static constexpr auto mbr_ptr{&SgStringVal::p_raw_string_value};
28312 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28313 using bind = Desc<SgStringVal, std::string SgStringVal::*, &SgStringVal::p_raw_string_value>;
28314};
28324template <> struct node_from_variant_t<712> { using type = SgStringVal; };
28325
28326// Class: StructureModifier
28327template <> struct describe_field_t<SgStructureModifier,SgStructureModifier::jovial_structure_modifier_enum,&SgStructureModifier::p_modifier> {
28330 static constexpr size_t position{0};
28331 static constexpr char const * const name{"modifier"};
28332 static constexpr char const * const typestr{"SgStructureModifier::jovial_structure_modifier_enum"};
28333 static constexpr bool traverse{false};
28334 static constexpr auto mbr_ptr{&SgStructureModifier::p_modifier};
28335 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28336 using bind = Desc<SgStructureModifier, SgStructureModifier::jovial_structure_modifier_enum SgStructureModifier::*, &SgStructureModifier::p_modifier>;
28337};
28338template <> struct describe_field_t<SgStructureModifier,int,&SgStructureModifier::p_bits_per_entry> {
28340 using field_type = int;
28341 static constexpr size_t position{1};
28342 static constexpr char const * const name{"bits_per_entry"};
28343 static constexpr char const * const typestr{"int"};
28344 static constexpr bool traverse{false};
28345 static constexpr auto mbr_ptr{&SgStructureModifier::p_bits_per_entry};
28346 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28347 using bind = Desc<SgStructureModifier, int SgStructureModifier::*, &SgStructureModifier::p_bits_per_entry>;
28348};
28350 using node = SgStructureModifier;
28351 using base = SgModifier;
28352 static constexpr char const * const name{"StructureModifier"};
28353 static constexpr unsigned long variant{713};
28354 static constexpr bool concrete{true};
28355 using subclasses_t = mp::List<>;
28357};
28358template <> struct node_from_variant_t<713> { using type = SgStructureModifier; };
28359
28360// Class: SubscriptExpression
28361template <> struct describe_field_t<SgSubscriptExpression,SgExpression*,&SgSubscriptExpression::p_lowerBound> {
28363 using field_type = SgExpression*;
28364 static constexpr size_t position{0};
28365 static constexpr char const * const name{"lowerBound"};
28366 static constexpr char const * const typestr{"SgExpression*"};
28367 static constexpr bool traverse{true};
28368 static constexpr auto mbr_ptr{&SgSubscriptExpression::p_lowerBound};
28369 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28370 using bind = Desc<SgSubscriptExpression, SgExpression* SgSubscriptExpression::*, &SgSubscriptExpression::p_lowerBound>;
28371};
28372template <> struct describe_field_t<SgSubscriptExpression,SgExpression*,&SgSubscriptExpression::p_upperBound> {
28374 using field_type = SgExpression*;
28375 static constexpr size_t position{1};
28376 static constexpr char const * const name{"upperBound"};
28377 static constexpr char const * const typestr{"SgExpression*"};
28378 static constexpr bool traverse{true};
28379 static constexpr auto mbr_ptr{&SgSubscriptExpression::p_upperBound};
28380 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28381 using bind = Desc<SgSubscriptExpression, SgExpression* SgSubscriptExpression::*, &SgSubscriptExpression::p_upperBound>;
28382};
28383template <> struct describe_field_t<SgSubscriptExpression,SgExpression*,&SgSubscriptExpression::p_stride> {
28385 using field_type = SgExpression*;
28386 static constexpr size_t position{2};
28387 static constexpr char const * const name{"stride"};
28388 static constexpr char const * const typestr{"SgExpression*"};
28389 static constexpr bool traverse{true};
28390 static constexpr auto mbr_ptr{&SgSubscriptExpression::p_stride};
28391 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28392 using bind = Desc<SgSubscriptExpression, SgExpression* SgSubscriptExpression::*, &SgSubscriptExpression::p_stride>;
28393};
28396 using base = SgExpression;
28397 static constexpr char const * const name{"SubscriptExpression"};
28398 static constexpr unsigned long variant{714};
28399 static constexpr bool concrete{true};
28400 using subclasses_t = mp::List<>;
28402};
28403template <> struct node_from_variant_t<714> { using type = SgSubscriptExpression; };
28404
28405// Class: SubtractOp
28406template <> struct describe_node_t<SgSubtractOp> {
28407 using node = SgSubtractOp;
28408 using base = SgBinaryOp;
28409 static constexpr char const * const name{"SubtractOp"};
28410 static constexpr unsigned long variant{715};
28411 static constexpr bool concrete{true};
28412 using subclasses_t = mp::List<>;
28413 using fields_t = mp::List<>;
28414};
28415template <> struct node_from_variant_t<715> { using type = SgSubtractOp; };
28416
28417// Class: Support
28427template <> struct node_from_variant_t<716> { using type = SgSupport; };
28428
28429// Class: SwitchStatement
28430template <> struct describe_field_t<SgSwitchStatement,SgStatement*,&SgSwitchStatement::p_item_selector> {
28431 using parent = SgSwitchStatement;
28432 using field_type = SgStatement*;
28433 static constexpr size_t position{0};
28434 static constexpr char const * const name{"item_selector"};
28435 static constexpr char const * const typestr{"SgStatement*"};
28436 static constexpr bool traverse{true};
28437 static constexpr auto mbr_ptr{&SgSwitchStatement::p_item_selector};
28438 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28439 using bind = Desc<SgSwitchStatement, SgStatement* SgSwitchStatement::*, &SgSwitchStatement::p_item_selector>;
28440};
28442 using parent = SgSwitchStatement;
28443 using field_type = SgStatement*;
28444 static constexpr size_t position{1};
28445 static constexpr char const * const name{"body"};
28446 static constexpr char const * const typestr{"SgStatement*"};
28447 static constexpr bool traverse{true};
28448 static constexpr auto mbr_ptr{&SgSwitchStatement::p_body};
28449 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28450 using bind = Desc<SgSwitchStatement, SgStatement* SgSwitchStatement::*, &SgSwitchStatement::p_body>;
28451};
28452template <> struct describe_field_t<SgSwitchStatement,SgLabelRefExp*,&SgSwitchStatement::p_end_numeric_label> {
28453 using parent = SgSwitchStatement;
28454 using field_type = SgLabelRefExp*;
28455 static constexpr size_t position{2};
28456 static constexpr char const * const name{"end_numeric_label"};
28457 static constexpr char const * const typestr{"SgLabelRefExp*"};
28458 static constexpr bool traverse{false};
28459 static constexpr auto mbr_ptr{&SgSwitchStatement::p_end_numeric_label};
28460 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28461 using bind = Desc<SgSwitchStatement, SgLabelRefExp* SgSwitchStatement::*, &SgSwitchStatement::p_end_numeric_label>;
28462};
28463template <> struct describe_field_t<SgSwitchStatement,std::string,&SgSwitchStatement::p_string_label> {
28464 using parent = SgSwitchStatement;
28465 using field_type = std::string;
28466 static constexpr size_t position{3};
28467 static constexpr char const * const name{"string_label"};
28468 static constexpr char const * const typestr{"std::string"};
28469 static constexpr bool traverse{false};
28470 static constexpr auto mbr_ptr{&SgSwitchStatement::p_string_label};
28471 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28472 using bind = Desc<SgSwitchStatement, std::string SgSwitchStatement::*, &SgSwitchStatement::p_string_label>;
28473};
28483template <> struct node_from_variant_t<717> { using type = SgSwitchStatement; };
28484
28485// Class: Symbol
28486template <> struct describe_field_t<SgSymbol,AstAttributeMechanism*,&SgSymbol::p_attributeMechanism> {
28487 using parent = SgSymbol;
28489 static constexpr size_t position{0};
28490 static constexpr char const * const name{"attributeMechanism"};
28491 static constexpr char const * const typestr{"AstAttributeMechanism*"};
28492 static constexpr bool traverse{false};
28493 static constexpr auto mbr_ptr{&SgSymbol::p_attributeMechanism};
28494 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28495 using bind = Desc<SgSymbol, AstAttributeMechanism* SgSymbol::*, &SgSymbol::p_attributeMechanism>;
28496};
28506template <> struct node_from_variant_t<718> { using type = SgSymbol; };
28507
28508// Class: SymbolTable
28510 using parent = SgSymbolTable;
28511 using field_type = SgSymbolTable::hash_iterator;
28512 static constexpr size_t position{0};
28513 static constexpr char const * const name{"iterator"};
28514 static constexpr char const * const typestr{"SgSymbolTable::hash_iterator"};
28515 static constexpr bool traverse{false};
28516 static constexpr auto mbr_ptr{&SgSymbolTable::p_iterator};
28517 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28518 using bind = Desc<SgSymbolTable, SgSymbolTable::hash_iterator SgSymbolTable::*, &SgSymbolTable::p_iterator>;
28519};
28521 using parent = SgSymbolTable;
28522 using field_type = SgName;
28523 static constexpr size_t position{1};
28524 static constexpr char const * const name{"name"};
28525 static constexpr char const * const typestr{"SgName"};
28526 static constexpr bool traverse{false};
28527 static constexpr auto mbr_ptr{&SgSymbolTable::p_name};
28528 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28529 using bind = Desc<SgSymbolTable, SgName SgSymbolTable::*, &SgSymbolTable::p_name>;
28530};
28532 using parent = SgSymbolTable;
28533 using field_type = bool;
28534 static constexpr size_t position{2};
28535 static constexpr char const * const name{"no_name"};
28536 static constexpr char const * const typestr{"bool"};
28537 static constexpr bool traverse{false};
28538 static constexpr auto mbr_ptr{&SgSymbolTable::p_no_name};
28539 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28540 using bind = Desc<SgSymbolTable, bool SgSymbolTable::*, &SgSymbolTable::p_no_name>;
28541};
28543 using parent = SgSymbolTable;
28545 static constexpr size_t position{3};
28546 static constexpr char const * const name{"table"};
28547 static constexpr char const * const typestr{" rose_hash_multimap*"};
28548 static constexpr bool traverse{false};
28549 static constexpr auto mbr_ptr{&SgSymbolTable::p_table};
28550 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28551 using bind = Desc<SgSymbolTable, rose_hash_multimap* SgSymbolTable::*, &SgSymbolTable::p_table>;
28552};
28553template <> struct describe_field_t<SgSymbolTable,SgNodeSet,&SgSymbolTable::p_symbolSet> {
28554 using parent = SgSymbolTable;
28555 using field_type = SgNodeSet;
28556 static constexpr size_t position{4};
28557 static constexpr char const * const name{"symbolSet"};
28558 static constexpr char const * const typestr{"SgNodeSet"};
28559 static constexpr bool traverse{false};
28560 static constexpr auto mbr_ptr{&SgSymbolTable::p_symbolSet};
28561 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28562 using bind = Desc<SgSymbolTable, SgNodeSet SgSymbolTable::*, &SgSymbolTable::p_symbolSet>;
28563};
28564template <> struct describe_field_t<SgSymbolTable,bool,&SgSymbolTable::p_case_insensitive> {
28565 using parent = SgSymbolTable;
28566 using field_type = bool;
28567 static constexpr size_t position{5};
28568 static constexpr char const * const name{"case_insensitive"};
28569 static constexpr char const * const typestr{"bool"};
28570 static constexpr bool traverse{false};
28571 static constexpr auto mbr_ptr{&SgSymbolTable::p_case_insensitive};
28572 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28573 using bind = Desc<SgSymbolTable, bool SgSymbolTable::*, &SgSymbolTable::p_case_insensitive>;
28574};
28584template <> struct node_from_variant_t<719> { using type = SgSymbolTable; };
28585
28586// Class: TemplateArgument
28587template <> struct describe_field_t<SgTemplateArgument,SgTemplateArgument::template_argument_enum,&SgTemplateArgument::p_argumentType> {
28588 using parent = SgTemplateArgument;
28590 static constexpr size_t position{0};
28591 static constexpr char const * const name{"argumentType"};
28592 static constexpr char const * const typestr{"SgTemplateArgument::template_argument_enum"};
28593 static constexpr bool traverse{false};
28594 static constexpr auto mbr_ptr{&SgTemplateArgument::p_argumentType};
28595 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28596 using bind = Desc<SgTemplateArgument, SgTemplateArgument::template_argument_enum SgTemplateArgument::*, &SgTemplateArgument::p_argumentType>;
28597};
28599 using parent = SgTemplateArgument;
28600 using field_type = bool;
28601 static constexpr size_t position{1};
28602 static constexpr char const * const name{"isArrayBoundUnknownType"};
28603 static constexpr char const * const typestr{"bool"};
28604 static constexpr bool traverse{false};
28605 static constexpr auto mbr_ptr{&SgTemplateArgument::p_isArrayBoundUnknownType};
28606 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28607 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_isArrayBoundUnknownType>;
28608};
28610 using parent = SgTemplateArgument;
28611 using field_type = SgType*;
28612 static constexpr size_t position{2};
28613 static constexpr char const * const name{"type"};
28614 static constexpr char const * const typestr{"SgType*"};
28615 static constexpr bool traverse{false};
28616 static constexpr auto mbr_ptr{&SgTemplateArgument::p_type};
28617 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28618 using bind = Desc<SgTemplateArgument, SgType* SgTemplateArgument::*, &SgTemplateArgument::p_type>;
28619};
28620template <> struct describe_field_t<SgTemplateArgument,SgType*,&SgTemplateArgument::p_unparsable_type_alias> {
28621 using parent = SgTemplateArgument;
28622 using field_type = SgType*;
28623 static constexpr size_t position{3};
28624 static constexpr char const * const name{"unparsable_type_alias"};
28625 static constexpr char const * const typestr{"SgType*"};
28626 static constexpr bool traverse{false};
28627 static constexpr auto mbr_ptr{&SgTemplateArgument::p_unparsable_type_alias};
28628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28629 using bind = Desc<SgTemplateArgument, SgType* SgTemplateArgument::*, &SgTemplateArgument::p_unparsable_type_alias>;
28630};
28632 using parent = SgTemplateArgument;
28633 using field_type = SgExpression*;
28634 static constexpr size_t position{4};
28635 static constexpr char const * const name{"expression"};
28636 static constexpr char const * const typestr{"SgExpression*"};
28637 static constexpr bool traverse{true};
28638 static constexpr auto mbr_ptr{&SgTemplateArgument::p_expression};
28639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28640 using bind = Desc<SgTemplateArgument, SgExpression* SgTemplateArgument::*, &SgTemplateArgument::p_expression>;
28641};
28642template <> struct describe_field_t<SgTemplateArgument,SgDeclarationStatement*,&SgTemplateArgument::p_templateDeclaration> {
28643 using parent = SgTemplateArgument;
28645 static constexpr size_t position{5};
28646 static constexpr char const * const name{"templateDeclaration"};
28647 static constexpr char const * const typestr{"SgDeclarationStatement*"};
28648 static constexpr bool traverse{true};
28649 static constexpr auto mbr_ptr{&SgTemplateArgument::p_templateDeclaration};
28650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28651 using bind = Desc<SgTemplateArgument, SgDeclarationStatement* SgTemplateArgument::*, &SgTemplateArgument::p_templateDeclaration>;
28652};
28653template <> struct describe_field_t<SgTemplateArgument,SgInitializedName*,&SgTemplateArgument::p_initializedName> {
28654 using parent = SgTemplateArgument;
28656 static constexpr size_t position{6};
28657 static constexpr char const * const name{"initializedName"};
28658 static constexpr char const * const typestr{"SgInitializedName*"};
28659 static constexpr bool traverse{true};
28660 static constexpr auto mbr_ptr{&SgTemplateArgument::p_initializedName};
28661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28662 using bind = Desc<SgTemplateArgument, SgInitializedName* SgTemplateArgument::*, &SgTemplateArgument::p_initializedName>;
28663};
28665 using parent = SgTemplateArgument;
28666 using field_type = bool;
28667 static constexpr size_t position{7};
28668 static constexpr char const * const name{"explicitlySpecified"};
28669 static constexpr char const * const typestr{"bool"};
28670 static constexpr bool traverse{false};
28671 static constexpr auto mbr_ptr{&SgTemplateArgument::p_explicitlySpecified};
28672 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28673 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_explicitlySpecified>;
28674};
28675template <> struct describe_field_t<SgTemplateArgument,int,&SgTemplateArgument::p_name_qualification_length> {
28676 using parent = SgTemplateArgument;
28677 using field_type = int;
28678 static constexpr size_t position{8};
28679 static constexpr char const * const name{"name_qualification_length"};
28680 static constexpr char const * const typestr{"int"};
28681 static constexpr bool traverse{false};
28682 static constexpr auto mbr_ptr{&SgTemplateArgument::p_name_qualification_length};
28683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28684 using bind = Desc<SgTemplateArgument, int SgTemplateArgument::*, &SgTemplateArgument::p_name_qualification_length>;
28685};
28686template <> struct describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_type_elaboration_required> {
28687 using parent = SgTemplateArgument;
28688 using field_type = bool;
28689 static constexpr size_t position{9};
28690 static constexpr char const * const name{"type_elaboration_required"};
28691 static constexpr char const * const typestr{"bool"};
28692 static constexpr bool traverse{false};
28693 static constexpr auto mbr_ptr{&SgTemplateArgument::p_type_elaboration_required};
28694 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28695 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_type_elaboration_required>;
28696};
28697template <> struct describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_global_qualification_required> {
28698 using parent = SgTemplateArgument;
28699 using field_type = bool;
28700 static constexpr size_t position{10};
28701 static constexpr char const * const name{"global_qualification_required"};
28702 static constexpr char const * const typestr{"bool"};
28703 static constexpr bool traverse{false};
28704 static constexpr auto mbr_ptr{&SgTemplateArgument::p_global_qualification_required};
28705 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28706 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_global_qualification_required>;
28707};
28708template <> struct describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_requiresGlobalNameQualificationOnType> {
28709 using parent = SgTemplateArgument;
28710 using field_type = bool;
28711 static constexpr size_t position{11};
28712 static constexpr char const * const name{"requiresGlobalNameQualificationOnType"};
28713 static constexpr char const * const typestr{"bool"};
28714 static constexpr bool traverse{false};
28715 static constexpr auto mbr_ptr{&SgTemplateArgument::p_requiresGlobalNameQualificationOnType};
28716 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28717 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_requiresGlobalNameQualificationOnType>;
28718};
28719template <> struct describe_field_t<SgTemplateArgument,int,&SgTemplateArgument::p_name_qualification_length_for_type> {
28720 using parent = SgTemplateArgument;
28721 using field_type = int;
28722 static constexpr size_t position{12};
28723 static constexpr char const * const name{"name_qualification_length_for_type"};
28724 static constexpr char const * const typestr{"int"};
28725 static constexpr bool traverse{false};
28726 static constexpr auto mbr_ptr{&SgTemplateArgument::p_name_qualification_length_for_type};
28727 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28728 using bind = Desc<SgTemplateArgument, int SgTemplateArgument::*, &SgTemplateArgument::p_name_qualification_length_for_type>;
28729};
28730template <> struct describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_type_elaboration_required_for_type> {
28731 using parent = SgTemplateArgument;
28732 using field_type = bool;
28733 static constexpr size_t position{13};
28734 static constexpr char const * const name{"type_elaboration_required_for_type"};
28735 static constexpr char const * const typestr{"bool"};
28736 static constexpr bool traverse{false};
28737 static constexpr auto mbr_ptr{&SgTemplateArgument::p_type_elaboration_required_for_type};
28738 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28739 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_type_elaboration_required_for_type>;
28740};
28741template <> struct describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_global_qualification_required_for_type> {
28742 using parent = SgTemplateArgument;
28743 using field_type = bool;
28744 static constexpr size_t position{14};
28745 static constexpr char const * const name{"global_qualification_required_for_type"};
28746 static constexpr char const * const typestr{"bool"};
28747 static constexpr bool traverse{false};
28748 static constexpr auto mbr_ptr{&SgTemplateArgument::p_global_qualification_required_for_type};
28749 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28750 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_global_qualification_required_for_type>;
28751};
28752template <> struct describe_field_t<SgTemplateArgument,SgTemplateArgument*,&SgTemplateArgument::p_previous_instance> {
28753 using parent = SgTemplateArgument;
28755 static constexpr size_t position{15};
28756 static constexpr char const * const name{"previous_instance"};
28757 static constexpr char const * const typestr{"SgTemplateArgument*"};
28758 static constexpr bool traverse{false};
28759 static constexpr auto mbr_ptr{&SgTemplateArgument::p_previous_instance};
28760 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28761 using bind = Desc<SgTemplateArgument, SgTemplateArgument* SgTemplateArgument::*, &SgTemplateArgument::p_previous_instance>;
28762};
28763template <> struct describe_field_t<SgTemplateArgument,SgTemplateArgument*,&SgTemplateArgument::p_next_instance> {
28764 using parent = SgTemplateArgument;
28766 static constexpr size_t position{16};
28767 static constexpr char const * const name{"next_instance"};
28768 static constexpr char const * const typestr{"SgTemplateArgument*"};
28769 static constexpr bool traverse{false};
28770 static constexpr auto mbr_ptr{&SgTemplateArgument::p_next_instance};
28771 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28772 using bind = Desc<SgTemplateArgument, SgTemplateArgument* SgTemplateArgument::*, &SgTemplateArgument::p_next_instance>;
28773};
28774template <> struct describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_is_pack_element> {
28775 using parent = SgTemplateArgument;
28776 using field_type = bool;
28777 static constexpr size_t position{17};
28778 static constexpr char const * const name{"is_pack_element"};
28779 static constexpr char const * const typestr{"bool"};
28780 static constexpr bool traverse{false};
28781 static constexpr auto mbr_ptr{&SgTemplateArgument::p_is_pack_element};
28782 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28783 using bind = Desc<SgTemplateArgument, bool SgTemplateArgument::*, &SgTemplateArgument::p_is_pack_element>;
28784};
28786 using node = SgTemplateArgument;
28787 using base = SgSupport;
28788 static constexpr char const * const name{"TemplateArgument"};
28789 static constexpr unsigned long variant{720};
28790 static constexpr bool concrete{true};
28791 using subclasses_t = mp::List<>;
28792 using fields_t = mp::List<describe_field_t<SgTemplateArgument,SgTemplateArgument::template_argument_enum,&SgTemplateArgument::p_argumentType>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_isArrayBoundUnknownType>, describe_field_t<SgTemplateArgument,SgType*,&SgTemplateArgument::p_type>, describe_field_t<SgTemplateArgument,SgType*,&SgTemplateArgument::p_unparsable_type_alias>, describe_field_t<SgTemplateArgument,SgExpression*,&SgTemplateArgument::p_expression>, describe_field_t<SgTemplateArgument,SgDeclarationStatement*,&SgTemplateArgument::p_templateDeclaration>, describe_field_t<SgTemplateArgument,SgInitializedName*,&SgTemplateArgument::p_initializedName>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_explicitlySpecified>, describe_field_t<SgTemplateArgument,int,&SgTemplateArgument::p_name_qualification_length>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_type_elaboration_required>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_global_qualification_required>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_requiresGlobalNameQualificationOnType>, describe_field_t<SgTemplateArgument,int,&SgTemplateArgument::p_name_qualification_length_for_type>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_type_elaboration_required_for_type>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_global_qualification_required_for_type>, describe_field_t<SgTemplateArgument,SgTemplateArgument*,&SgTemplateArgument::p_previous_instance>, describe_field_t<SgTemplateArgument,SgTemplateArgument*,&SgTemplateArgument::p_next_instance>, describe_field_t<SgTemplateArgument,bool,&SgTemplateArgument::p_is_pack_element>>;
28793};
28794template <> struct node_from_variant_t<720> { using type = SgTemplateArgument; };
28795
28796// Class: TemplateArgumentList
28797template <> struct describe_field_t<SgTemplateArgumentList,SgTemplateArgumentPtrList,&SgTemplateArgumentList::p_args> {
28799 using field_type = SgTemplateArgumentPtrList;
28800 static constexpr size_t position{0};
28801 static constexpr char const * const name{"args"};
28802 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
28803 static constexpr bool traverse{true};
28804 static constexpr auto mbr_ptr{&SgTemplateArgumentList::p_args};
28805 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28806 using bind = Desc<SgTemplateArgumentList, SgTemplateArgumentPtrList SgTemplateArgumentList::*, &SgTemplateArgumentList::p_args>;
28807};
28810 using base = SgSupport;
28811 static constexpr char const * const name{"TemplateArgumentList"};
28812 static constexpr unsigned long variant{721};
28813 static constexpr bool concrete{true};
28814 using subclasses_t = mp::List<>;
28816};
28817template <> struct node_from_variant_t<721> { using type = SgTemplateArgumentList; };
28818
28819// Class: TemplateDeclaration
28822 using field_type = SgName;
28823 static constexpr size_t position{0};
28824 static constexpr char const * const name{"name"};
28825 static constexpr char const * const typestr{"SgName"};
28826 static constexpr bool traverse{false};
28827 static constexpr auto mbr_ptr{&SgTemplateDeclaration::p_name};
28828 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28829 using bind = Desc<SgTemplateDeclaration, SgName SgTemplateDeclaration::*, &SgTemplateDeclaration::p_name>;
28830};
28833 using field_type = SgName;
28834 static constexpr size_t position{1};
28835 static constexpr char const * const name{"string"};
28836 static constexpr char const * const typestr{"SgName"};
28837 static constexpr bool traverse{false};
28838 static constexpr auto mbr_ptr{&SgTemplateDeclaration::p_string};
28839 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28840 using bind = Desc<SgTemplateDeclaration, SgName SgTemplateDeclaration::*, &SgTemplateDeclaration::p_string>;
28841};
28845 static constexpr size_t position{2};
28846 static constexpr char const * const name{"template_kind"};
28847 static constexpr char const * const typestr{"SgTemplateDeclaration::template_type_enum"};
28848 static constexpr bool traverse{false};
28849 static constexpr auto mbr_ptr{&SgTemplateDeclaration::p_template_kind};
28850 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28851 using bind = Desc<SgTemplateDeclaration, SgTemplateDeclaration::template_type_enum SgTemplateDeclaration::*, &SgTemplateDeclaration::p_template_kind>;
28852};
28855 using field_type = SgTemplateParameterPtrList;
28856 static constexpr size_t position{3};
28857 static constexpr char const * const name{"templateParameters"};
28858 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
28859 static constexpr bool traverse{false};
28860 static constexpr auto mbr_ptr{&SgTemplateDeclaration::p_templateParameters};
28861 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28862 using bind = Desc<SgTemplateDeclaration, SgTemplateParameterPtrList SgTemplateDeclaration::*, &SgTemplateDeclaration::p_templateParameters>;
28863};
28867 static constexpr size_t position{4};
28868 static constexpr char const * const name{"scope"};
28869 static constexpr char const * const typestr{"SgScopeStatement*"};
28870 static constexpr bool traverse{false};
28871 static constexpr auto mbr_ptr{&SgTemplateDeclaration::p_scope};
28872 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28873 using bind = Desc<SgTemplateDeclaration, SgScopeStatement* SgTemplateDeclaration::*, &SgTemplateDeclaration::p_scope>;
28874};
28875template <> struct describe_field_t<SgTemplateDeclaration,SgDeclarationScope*,&SgTemplateDeclaration::p_nonreal_decl_scope> {
28878 static constexpr size_t position{5};
28879 static constexpr char const * const name{"nonreal_decl_scope"};
28880 static constexpr char const * const typestr{"SgDeclarationScope*"};
28881 static constexpr bool traverse{false};
28882 static constexpr auto mbr_ptr{&SgTemplateDeclaration::p_nonreal_decl_scope};
28883 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28884 using bind = Desc<SgTemplateDeclaration, SgDeclarationScope* SgTemplateDeclaration::*, &SgTemplateDeclaration::p_nonreal_decl_scope>;
28885};
28895template <> struct node_from_variant_t<722> { using type = SgTemplateDeclaration; };
28896
28897// Class: TemplateClassDeclaration
28898template <> struct describe_field_t<SgTemplateClassDeclaration,SgTemplateParameterPtrList,&SgTemplateClassDeclaration::p_templateParameters> {
28900 using field_type = SgTemplateParameterPtrList;
28901 static constexpr size_t position{0};
28902 static constexpr char const * const name{"templateParameters"};
28903 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
28904 static constexpr bool traverse{false};
28905 static constexpr auto mbr_ptr{&SgTemplateClassDeclaration::p_templateParameters};
28906 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28907 using bind = Desc<SgTemplateClassDeclaration, SgTemplateParameterPtrList SgTemplateClassDeclaration::*, &SgTemplateClassDeclaration::p_templateParameters>;
28908};
28909template <> struct describe_field_t<SgTemplateClassDeclaration,SgTemplateArgumentPtrList,&SgTemplateClassDeclaration::p_templateSpecializationArguments> {
28911 using field_type = SgTemplateArgumentPtrList;
28912 static constexpr size_t position{1};
28913 static constexpr char const * const name{"templateSpecializationArguments"};
28914 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
28915 static constexpr bool traverse{false};
28916 static constexpr auto mbr_ptr{&SgTemplateClassDeclaration::p_templateSpecializationArguments};
28917 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28918 using bind = Desc<SgTemplateClassDeclaration, SgTemplateArgumentPtrList SgTemplateClassDeclaration::*, &SgTemplateClassDeclaration::p_templateSpecializationArguments>;
28919};
28920template <> struct describe_field_t<SgTemplateClassDeclaration,SgName,&SgTemplateClassDeclaration::p_string> {
28922 using field_type = SgName;
28923 static constexpr size_t position{2};
28924 static constexpr char const * const name{"string"};
28925 static constexpr char const * const typestr{"SgName"};
28926 static constexpr bool traverse{false};
28927 static constexpr auto mbr_ptr{&SgTemplateClassDeclaration::p_string};
28928 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28929 using bind = Desc<SgTemplateClassDeclaration, SgName SgTemplateClassDeclaration::*, &SgTemplateClassDeclaration::p_string>;
28930};
28931template <> struct describe_field_t<SgTemplateClassDeclaration,SgName,&SgTemplateClassDeclaration::p_templateName> {
28933 using field_type = SgName;
28934 static constexpr size_t position{3};
28935 static constexpr char const * const name{"templateName"};
28936 static constexpr char const * const typestr{"SgName"};
28937 static constexpr bool traverse{false};
28938 static constexpr auto mbr_ptr{&SgTemplateClassDeclaration::p_templateName};
28939 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28940 using bind = Desc<SgTemplateClassDeclaration, SgName SgTemplateClassDeclaration::*, &SgTemplateClassDeclaration::p_templateName>;
28941};
28942template <> struct describe_field_t<SgTemplateClassDeclaration,SgDeclarationScope*,&SgTemplateClassDeclaration::p_nonreal_decl_scope> {
28945 static constexpr size_t position{4};
28946 static constexpr char const * const name{"nonreal_decl_scope"};
28947 static constexpr char const * const typestr{"SgDeclarationScope*"};
28948 static constexpr bool traverse{false};
28949 static constexpr auto mbr_ptr{&SgTemplateClassDeclaration::p_nonreal_decl_scope};
28950 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28951 using bind = Desc<SgTemplateClassDeclaration, SgDeclarationScope* SgTemplateClassDeclaration::*, &SgTemplateClassDeclaration::p_nonreal_decl_scope>;
28952};
28962template <> struct node_from_variant_t<723> { using type = SgTemplateClassDeclaration; };
28963
28964// Class: TemplateClassSymbol
28967 using base = SgClassSymbol;
28968 static constexpr char const * const name{"TemplateClassSymbol"};
28969 static constexpr unsigned long variant{724};
28970 static constexpr bool concrete{true};
28971 using subclasses_t = mp::List<>;
28972 using fields_t = mp::List<>;
28973};
28974template <> struct node_from_variant_t<724> { using type = SgTemplateClassSymbol; };
28975
28976// Class: TemplateFunctionDeclaration
28977template <> struct describe_field_t<SgTemplateFunctionDeclaration,SgTemplateParameterPtrList,&SgTemplateFunctionDeclaration::p_templateParameters> {
28979 using field_type = SgTemplateParameterPtrList;
28980 static constexpr size_t position{0};
28981 static constexpr char const * const name{"templateParameters"};
28982 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
28983 static constexpr bool traverse{false};
28984 static constexpr auto mbr_ptr{&SgTemplateFunctionDeclaration::p_templateParameters};
28985 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28986 using bind = Desc<SgTemplateFunctionDeclaration, SgTemplateParameterPtrList SgTemplateFunctionDeclaration::*, &SgTemplateFunctionDeclaration::p_templateParameters>;
28987};
28988template <> struct describe_field_t<SgTemplateFunctionDeclaration,SgTemplateArgumentPtrList,&SgTemplateFunctionDeclaration::p_templateSpecializationArguments> {
28990 using field_type = SgTemplateArgumentPtrList;
28991 static constexpr size_t position{1};
28992 static constexpr char const * const name{"templateSpecializationArguments"};
28993 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
28994 static constexpr bool traverse{false};
28995 static constexpr auto mbr_ptr{&SgTemplateFunctionDeclaration::p_templateSpecializationArguments};
28996 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
28997 using bind = Desc<SgTemplateFunctionDeclaration, SgTemplateArgumentPtrList SgTemplateFunctionDeclaration::*, &SgTemplateFunctionDeclaration::p_templateSpecializationArguments>;
28998};
28999template <> struct describe_field_t<SgTemplateFunctionDeclaration,SgName,&SgTemplateFunctionDeclaration::p_string> {
29001 using field_type = SgName;
29002 static constexpr size_t position{2};
29003 static constexpr char const * const name{"string"};
29004 static constexpr char const * const typestr{"SgName"};
29005 static constexpr bool traverse{false};
29006 static constexpr auto mbr_ptr{&SgTemplateFunctionDeclaration::p_string};
29007 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29008 using bind = Desc<SgTemplateFunctionDeclaration, SgName SgTemplateFunctionDeclaration::*, &SgTemplateFunctionDeclaration::p_string>;
29009};
29010template <> struct describe_field_t<SgTemplateFunctionDeclaration,bool,&SgTemplateFunctionDeclaration::p_string_represents_function_body> {
29012 using field_type = bool;
29013 static constexpr size_t position{3};
29014 static constexpr char const * const name{"string_represents_function_body"};
29015 static constexpr char const * const typestr{"bool"};
29016 static constexpr bool traverse{false};
29017 static constexpr auto mbr_ptr{&SgTemplateFunctionDeclaration::p_string_represents_function_body};
29018 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29019 using bind = Desc<SgTemplateFunctionDeclaration, bool SgTemplateFunctionDeclaration::*, &SgTemplateFunctionDeclaration::p_string_represents_function_body>;
29020};
29021template <> struct describe_field_t<SgTemplateFunctionDeclaration,SgDeclarationScope*,&SgTemplateFunctionDeclaration::p_nonreal_decl_scope> {
29024 static constexpr size_t position{4};
29025 static constexpr char const * const name{"nonreal_decl_scope"};
29026 static constexpr char const * const typestr{"SgDeclarationScope*"};
29027 static constexpr bool traverse{false};
29028 static constexpr auto mbr_ptr{&SgTemplateFunctionDeclaration::p_nonreal_decl_scope};
29029 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29030 using bind = Desc<SgTemplateFunctionDeclaration, SgDeclarationScope* SgTemplateFunctionDeclaration::*, &SgTemplateFunctionDeclaration::p_nonreal_decl_scope>;
29031};
29041template <> struct node_from_variant_t<725> { using type = SgTemplateFunctionDeclaration; };
29042
29043// Class: TemplateFunctionRefExp
29044template <> struct describe_field_t<SgTemplateFunctionRefExp,SgTemplateFunctionSymbol*,&SgTemplateFunctionRefExp::p_symbol_i> {
29047 static constexpr size_t position{0};
29048 static constexpr char const * const name{"symbol_i"};
29049 static constexpr char const * const typestr{"SgTemplateFunctionSymbol*"};
29050 static constexpr bool traverse{false};
29051 static constexpr auto mbr_ptr{&SgTemplateFunctionRefExp::p_symbol_i};
29052 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29053 using bind = Desc<SgTemplateFunctionRefExp, SgTemplateFunctionSymbol* SgTemplateFunctionRefExp::*, &SgTemplateFunctionRefExp::p_symbol_i>;
29054};
29055template <> struct describe_field_t<SgTemplateFunctionRefExp,int,&SgTemplateFunctionRefExp::p_name_qualification_length> {
29057 using field_type = int;
29058 static constexpr size_t position{1};
29059 static constexpr char const * const name{"name_qualification_length"};
29060 static constexpr char const * const typestr{"int"};
29061 static constexpr bool traverse{false};
29062 static constexpr auto mbr_ptr{&SgTemplateFunctionRefExp::p_name_qualification_length};
29063 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29064 using bind = Desc<SgTemplateFunctionRefExp, int SgTemplateFunctionRefExp::*, &SgTemplateFunctionRefExp::p_name_qualification_length>;
29065};
29066template <> struct describe_field_t<SgTemplateFunctionRefExp,bool,&SgTemplateFunctionRefExp::p_type_elaboration_required> {
29068 using field_type = bool;
29069 static constexpr size_t position{2};
29070 static constexpr char const * const name{"type_elaboration_required"};
29071 static constexpr char const * const typestr{"bool"};
29072 static constexpr bool traverse{false};
29073 static constexpr auto mbr_ptr{&SgTemplateFunctionRefExp::p_type_elaboration_required};
29074 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29075 using bind = Desc<SgTemplateFunctionRefExp, bool SgTemplateFunctionRefExp::*, &SgTemplateFunctionRefExp::p_type_elaboration_required>;
29076};
29077template <> struct describe_field_t<SgTemplateFunctionRefExp,bool,&SgTemplateFunctionRefExp::p_global_qualification_required> {
29079 using field_type = bool;
29080 static constexpr size_t position{3};
29081 static constexpr char const * const name{"global_qualification_required"};
29082 static constexpr char const * const typestr{"bool"};
29083 static constexpr bool traverse{false};
29084 static constexpr auto mbr_ptr{&SgTemplateFunctionRefExp::p_global_qualification_required};
29085 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29086 using bind = Desc<SgTemplateFunctionRefExp, bool SgTemplateFunctionRefExp::*, &SgTemplateFunctionRefExp::p_global_qualification_required>;
29087};
29097template <> struct node_from_variant_t<726> { using type = SgTemplateFunctionRefExp; };
29098
29099// Class: TemplateFunctionSymbol
29102 using base = SgFunctionSymbol;
29103 static constexpr char const * const name{"TemplateFunctionSymbol"};
29104 static constexpr unsigned long variant{727};
29105 static constexpr bool concrete{true};
29106 using subclasses_t = mp::List<>;
29107 using fields_t = mp::List<>;
29108};
29109template <> struct node_from_variant_t<727> { using type = SgTemplateFunctionSymbol; };
29110
29111// Class: TemplateMemberFunctionDeclaration
29112template <> struct describe_field_t<SgTemplateMemberFunctionDeclaration,SgTemplateParameterPtrList,&SgTemplateMemberFunctionDeclaration::p_templateParameters> {
29114 using field_type = SgTemplateParameterPtrList;
29115 static constexpr size_t position{0};
29116 static constexpr char const * const name{"templateParameters"};
29117 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
29118 static constexpr bool traverse{false};
29119 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionDeclaration::p_templateParameters};
29120 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29121 using bind = Desc<SgTemplateMemberFunctionDeclaration, SgTemplateParameterPtrList SgTemplateMemberFunctionDeclaration::*, &SgTemplateMemberFunctionDeclaration::p_templateParameters>;
29122};
29123template <> struct describe_field_t<SgTemplateMemberFunctionDeclaration,SgTemplateArgumentPtrList,&SgTemplateMemberFunctionDeclaration::p_templateSpecializationArguments> {
29125 using field_type = SgTemplateArgumentPtrList;
29126 static constexpr size_t position{1};
29127 static constexpr char const * const name{"templateSpecializationArguments"};
29128 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
29129 static constexpr bool traverse{false};
29130 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionDeclaration::p_templateSpecializationArguments};
29131 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29132 using bind = Desc<SgTemplateMemberFunctionDeclaration, SgTemplateArgumentPtrList SgTemplateMemberFunctionDeclaration::*, &SgTemplateMemberFunctionDeclaration::p_templateSpecializationArguments>;
29133};
29134template <> struct describe_field_t<SgTemplateMemberFunctionDeclaration,SgName,&SgTemplateMemberFunctionDeclaration::p_string> {
29136 using field_type = SgName;
29137 static constexpr size_t position{2};
29138 static constexpr char const * const name{"string"};
29139 static constexpr char const * const typestr{"SgName"};
29140 static constexpr bool traverse{false};
29141 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionDeclaration::p_string};
29142 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29143 using bind = Desc<SgTemplateMemberFunctionDeclaration, SgName SgTemplateMemberFunctionDeclaration::*, &SgTemplateMemberFunctionDeclaration::p_string>;
29144};
29145template <> struct describe_field_t<SgTemplateMemberFunctionDeclaration,bool,&SgTemplateMemberFunctionDeclaration::p_string_represents_function_body> {
29147 using field_type = bool;
29148 static constexpr size_t position{3};
29149 static constexpr char const * const name{"string_represents_function_body"};
29150 static constexpr char const * const typestr{"bool"};
29151 static constexpr bool traverse{false};
29152 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionDeclaration::p_string_represents_function_body};
29153 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29154 using bind = Desc<SgTemplateMemberFunctionDeclaration, bool SgTemplateMemberFunctionDeclaration::*, &SgTemplateMemberFunctionDeclaration::p_string_represents_function_body>;
29155};
29156template <> struct describe_field_t<SgTemplateMemberFunctionDeclaration,SgDeclarationScope*,&SgTemplateMemberFunctionDeclaration::p_nonreal_decl_scope> {
29159 static constexpr size_t position{4};
29160 static constexpr char const * const name{"nonreal_decl_scope"};
29161 static constexpr char const * const typestr{"SgDeclarationScope*"};
29162 static constexpr bool traverse{false};
29163 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionDeclaration::p_nonreal_decl_scope};
29164 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29165 using bind = Desc<SgTemplateMemberFunctionDeclaration, SgDeclarationScope* SgTemplateMemberFunctionDeclaration::*, &SgTemplateMemberFunctionDeclaration::p_nonreal_decl_scope>;
29166};
29176template <> struct node_from_variant_t<728> { using type = SgTemplateMemberFunctionDeclaration; };
29177
29178// Class: TemplateMemberFunctionRefExp
29179template <> struct describe_field_t<SgTemplateMemberFunctionRefExp,SgTemplateMemberFunctionSymbol*,&SgTemplateMemberFunctionRefExp::p_symbol_i> {
29182 static constexpr size_t position{0};
29183 static constexpr char const * const name{"symbol_i"};
29184 static constexpr char const * const typestr{"SgTemplateMemberFunctionSymbol*"};
29185 static constexpr bool traverse{false};
29186 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionRefExp::p_symbol_i};
29187 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29188 using bind = Desc<SgTemplateMemberFunctionRefExp, SgTemplateMemberFunctionSymbol* SgTemplateMemberFunctionRefExp::*, &SgTemplateMemberFunctionRefExp::p_symbol_i>;
29189};
29190template <> struct describe_field_t<SgTemplateMemberFunctionRefExp,int,&SgTemplateMemberFunctionRefExp::p_virtual_call> {
29192 using field_type = int;
29193 static constexpr size_t position{1};
29194 static constexpr char const * const name{"virtual_call"};
29195 static constexpr char const * const typestr{"int"};
29196 static constexpr bool traverse{false};
29197 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionRefExp::p_virtual_call};
29198 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29199 using bind = Desc<SgTemplateMemberFunctionRefExp, int SgTemplateMemberFunctionRefExp::*, &SgTemplateMemberFunctionRefExp::p_virtual_call>;
29200};
29201template <> struct describe_field_t<SgTemplateMemberFunctionRefExp,int,&SgTemplateMemberFunctionRefExp::p_need_qualifier> {
29203 using field_type = int;
29204 static constexpr size_t position{2};
29205 static constexpr char const * const name{"need_qualifier"};
29206 static constexpr char const * const typestr{"int"};
29207 static constexpr bool traverse{false};
29208 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionRefExp::p_need_qualifier};
29209 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29210 using bind = Desc<SgTemplateMemberFunctionRefExp, int SgTemplateMemberFunctionRefExp::*, &SgTemplateMemberFunctionRefExp::p_need_qualifier>;
29211};
29212template <> struct describe_field_t<SgTemplateMemberFunctionRefExp,int,&SgTemplateMemberFunctionRefExp::p_name_qualification_length> {
29214 using field_type = int;
29215 static constexpr size_t position{3};
29216 static constexpr char const * const name{"name_qualification_length"};
29217 static constexpr char const * const typestr{"int"};
29218 static constexpr bool traverse{false};
29219 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionRefExp::p_name_qualification_length};
29220 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29221 using bind = Desc<SgTemplateMemberFunctionRefExp, int SgTemplateMemberFunctionRefExp::*, &SgTemplateMemberFunctionRefExp::p_name_qualification_length>;
29222};
29223template <> struct describe_field_t<SgTemplateMemberFunctionRefExp,bool,&SgTemplateMemberFunctionRefExp::p_type_elaboration_required> {
29225 using field_type = bool;
29226 static constexpr size_t position{4};
29227 static constexpr char const * const name{"type_elaboration_required"};
29228 static constexpr char const * const typestr{"bool"};
29229 static constexpr bool traverse{false};
29230 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionRefExp::p_type_elaboration_required};
29231 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29232 using bind = Desc<SgTemplateMemberFunctionRefExp, bool SgTemplateMemberFunctionRefExp::*, &SgTemplateMemberFunctionRefExp::p_type_elaboration_required>;
29233};
29234template <> struct describe_field_t<SgTemplateMemberFunctionRefExp,bool,&SgTemplateMemberFunctionRefExp::p_global_qualification_required> {
29236 using field_type = bool;
29237 static constexpr size_t position{5};
29238 static constexpr char const * const name{"global_qualification_required"};
29239 static constexpr char const * const typestr{"bool"};
29240 static constexpr bool traverse{false};
29241 static constexpr auto mbr_ptr{&SgTemplateMemberFunctionRefExp::p_global_qualification_required};
29242 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29243 using bind = Desc<SgTemplateMemberFunctionRefExp, bool SgTemplateMemberFunctionRefExp::*, &SgTemplateMemberFunctionRefExp::p_global_qualification_required>;
29244};
29254template <> struct node_from_variant_t<729> { using type = SgTemplateMemberFunctionRefExp; };
29255
29256// Class: TemplateMemberFunctionSymbol
29260 static constexpr char const * const name{"TemplateMemberFunctionSymbol"};
29261 static constexpr unsigned long variant{730};
29262 static constexpr bool concrete{true};
29263 using subclasses_t = mp::List<>;
29264 using fields_t = mp::List<>;
29265};
29266template <> struct node_from_variant_t<730> { using type = SgTemplateMemberFunctionSymbol; };
29267
29268// Class: TemplateTypedefDeclaration
29269template <> struct describe_field_t<SgTemplateTypedefDeclaration,SgTemplateParameterPtrList,&SgTemplateTypedefDeclaration::p_templateParameters> {
29271 using field_type = SgTemplateParameterPtrList;
29272 static constexpr size_t position{0};
29273 static constexpr char const * const name{"templateParameters"};
29274 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
29275 static constexpr bool traverse{false};
29276 static constexpr auto mbr_ptr{&SgTemplateTypedefDeclaration::p_templateParameters};
29277 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29278 using bind = Desc<SgTemplateTypedefDeclaration, SgTemplateParameterPtrList SgTemplateTypedefDeclaration::*, &SgTemplateTypedefDeclaration::p_templateParameters>;
29279};
29280template <> struct describe_field_t<SgTemplateTypedefDeclaration,SgTemplateArgumentPtrList,&SgTemplateTypedefDeclaration::p_templateSpecializationArguments> {
29282 using field_type = SgTemplateArgumentPtrList;
29283 static constexpr size_t position{1};
29284 static constexpr char const * const name{"templateSpecializationArguments"};
29285 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
29286 static constexpr bool traverse{false};
29287 static constexpr auto mbr_ptr{&SgTemplateTypedefDeclaration::p_templateSpecializationArguments};
29288 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29289 using bind = Desc<SgTemplateTypedefDeclaration, SgTemplateArgumentPtrList SgTemplateTypedefDeclaration::*, &SgTemplateTypedefDeclaration::p_templateSpecializationArguments>;
29290};
29291template <> struct describe_field_t<SgTemplateTypedefDeclaration,SgName,&SgTemplateTypedefDeclaration::p_string> {
29293 using field_type = SgName;
29294 static constexpr size_t position{2};
29295 static constexpr char const * const name{"string"};
29296 static constexpr char const * const typestr{"SgName"};
29297 static constexpr bool traverse{false};
29298 static constexpr auto mbr_ptr{&SgTemplateTypedefDeclaration::p_string};
29299 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29300 using bind = Desc<SgTemplateTypedefDeclaration, SgName SgTemplateTypedefDeclaration::*, &SgTemplateTypedefDeclaration::p_string>;
29301};
29302template <> struct describe_field_t<SgTemplateTypedefDeclaration,SgDeclarationScope*,&SgTemplateTypedefDeclaration::p_nonreal_decl_scope> {
29305 static constexpr size_t position{3};
29306 static constexpr char const * const name{"nonreal_decl_scope"};
29307 static constexpr char const * const typestr{"SgDeclarationScope*"};
29308 static constexpr bool traverse{false};
29309 static constexpr auto mbr_ptr{&SgTemplateTypedefDeclaration::p_nonreal_decl_scope};
29310 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29311 using bind = Desc<SgTemplateTypedefDeclaration, SgDeclarationScope* SgTemplateTypedefDeclaration::*, &SgTemplateTypedefDeclaration::p_nonreal_decl_scope>;
29312};
29322template <> struct node_from_variant_t<731> { using type = SgTemplateTypedefDeclaration; };
29323
29324// Class: TemplateTypedefSymbol
29327 using base = SgTypedefSymbol;
29328 static constexpr char const * const name{"TemplateTypedefSymbol"};
29329 static constexpr unsigned long variant{732};
29330 static constexpr bool concrete{true};
29331 using subclasses_t = mp::List<>;
29332 using fields_t = mp::List<>;
29333};
29334template <> struct node_from_variant_t<732> { using type = SgTemplateTypedefSymbol; };
29335
29336// Class: TemplateVariableDeclaration
29337template <> struct describe_field_t<SgTemplateVariableDeclaration,SgTemplateParameterPtrList,&SgTemplateVariableDeclaration::p_templateParameters> {
29339 using field_type = SgTemplateParameterPtrList;
29340 static constexpr size_t position{0};
29341 static constexpr char const * const name{"templateParameters"};
29342 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
29343 static constexpr bool traverse{false};
29344 static constexpr auto mbr_ptr{&SgTemplateVariableDeclaration::p_templateParameters};
29345 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29346 using bind = Desc<SgTemplateVariableDeclaration, SgTemplateParameterPtrList SgTemplateVariableDeclaration::*, &SgTemplateVariableDeclaration::p_templateParameters>;
29347};
29348template <> struct describe_field_t<SgTemplateVariableDeclaration,SgTemplateArgumentPtrList,&SgTemplateVariableDeclaration::p_templateSpecializationArguments> {
29350 using field_type = SgTemplateArgumentPtrList;
29351 static constexpr size_t position{1};
29352 static constexpr char const * const name{"templateSpecializationArguments"};
29353 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
29354 static constexpr bool traverse{false};
29355 static constexpr auto mbr_ptr{&SgTemplateVariableDeclaration::p_templateSpecializationArguments};
29356 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29357 using bind = Desc<SgTemplateVariableDeclaration, SgTemplateArgumentPtrList SgTemplateVariableDeclaration::*, &SgTemplateVariableDeclaration::p_templateSpecializationArguments>;
29358};
29359template <> struct describe_field_t<SgTemplateVariableDeclaration,SgName,&SgTemplateVariableDeclaration::p_string> {
29361 using field_type = SgName;
29362 static constexpr size_t position{2};
29363 static constexpr char const * const name{"string"};
29364 static constexpr char const * const typestr{"SgName"};
29365 static constexpr bool traverse{false};
29366 static constexpr auto mbr_ptr{&SgTemplateVariableDeclaration::p_string};
29367 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29368 using bind = Desc<SgTemplateVariableDeclaration, SgName SgTemplateVariableDeclaration::*, &SgTemplateVariableDeclaration::p_string>;
29369};
29370template <> struct describe_field_t<SgTemplateVariableDeclaration,SgDeclarationScope*,&SgTemplateVariableDeclaration::p_nonreal_decl_scope> {
29373 static constexpr size_t position{3};
29374 static constexpr char const * const name{"nonreal_decl_scope"};
29375 static constexpr char const * const typestr{"SgDeclarationScope*"};
29376 static constexpr bool traverse{false};
29377 static constexpr auto mbr_ptr{&SgTemplateVariableDeclaration::p_nonreal_decl_scope};
29378 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29379 using bind = Desc<SgTemplateVariableDeclaration, SgDeclarationScope* SgTemplateVariableDeclaration::*, &SgTemplateVariableDeclaration::p_nonreal_decl_scope>;
29380};
29390template <> struct node_from_variant_t<733> { using type = SgTemplateVariableDeclaration; };
29391
29392// Class: TemplateVariableSymbol
29395 using base = SgVariableSymbol;
29396 static constexpr char const * const name{"TemplateVariableSymbol"};
29397 static constexpr unsigned long variant{734};
29398 static constexpr bool concrete{true};
29399 using subclasses_t = mp::List<>;
29400 using fields_t = mp::List<>;
29401};
29402template <> struct node_from_variant_t<734> { using type = SgTemplateVariableSymbol; };
29403
29404// Class: TemplateClassDefinition
29407 using base = SgClassDefinition;
29408 static constexpr char const * const name{"TemplateClassDefinition"};
29409 static constexpr unsigned long variant{735};
29410 static constexpr bool concrete{true};
29411 using subclasses_t = mp::List<>;
29412 using fields_t = mp::List<>;
29413};
29414template <> struct node_from_variant_t<735> { using type = SgTemplateClassDefinition; };
29415
29416// Class: TemplateFunctionDefinition
29419 using base = SgFunctionDefinition;
29420 static constexpr char const * const name{"TemplateFunctionDefinition"};
29421 static constexpr unsigned long variant{736};
29422 static constexpr bool concrete{true};
29423 using subclasses_t = mp::List<>;
29424 using fields_t = mp::List<>;
29425};
29426template <> struct node_from_variant_t<736> { using type = SgTemplateFunctionDefinition; };
29427
29428// Class: TemplateInstantiationDecl
29431 using field_type = SgName;
29432 static constexpr size_t position{0};
29433 static constexpr char const * const name{"templateName"};
29434 static constexpr char const * const typestr{"SgName"};
29435 static constexpr bool traverse{false};
29436 static constexpr auto mbr_ptr{&SgTemplateInstantiationDecl::p_templateName};
29437 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29438 using bind = Desc<SgTemplateInstantiationDecl, SgName SgTemplateInstantiationDecl::*, &SgTemplateInstantiationDecl::p_templateName>;
29439};
29442 using field_type = SgName;
29443 static constexpr size_t position{1};
29444 static constexpr char const * const name{"templateHeader"};
29445 static constexpr char const * const typestr{"SgName"};
29446 static constexpr bool traverse{false};
29447 static constexpr auto mbr_ptr{&SgTemplateInstantiationDecl::p_templateHeader};
29448 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29449 using bind = Desc<SgTemplateInstantiationDecl, SgName SgTemplateInstantiationDecl::*, &SgTemplateInstantiationDecl::p_templateHeader>;
29450};
29454 static constexpr size_t position{2};
29455 static constexpr char const * const name{"templateDeclaration"};
29456 static constexpr char const * const typestr{"SgTemplateClassDeclaration*"};
29457 static constexpr bool traverse{false};
29458 static constexpr auto mbr_ptr{&SgTemplateInstantiationDecl::p_templateDeclaration};
29459 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29460 using bind = Desc<SgTemplateInstantiationDecl, SgTemplateClassDeclaration* SgTemplateInstantiationDecl::*, &SgTemplateInstantiationDecl::p_templateDeclaration>;
29461};
29464 using field_type = SgTemplateArgumentPtrList;
29465 static constexpr size_t position{3};
29466 static constexpr char const * const name{"templateArguments"};
29467 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
29468 static constexpr bool traverse{false};
29469 static constexpr auto mbr_ptr{&SgTemplateInstantiationDecl::p_templateArguments};
29470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29471 using bind = Desc<SgTemplateInstantiationDecl, SgTemplateArgumentPtrList SgTemplateInstantiationDecl::*, &SgTemplateInstantiationDecl::p_templateArguments>;
29472};
29475 using field_type = bool;
29476 static constexpr size_t position{4};
29477 static constexpr char const * const name{"nameResetFromMangledForm"};
29478 static constexpr char const * const typestr{"bool"};
29479 static constexpr bool traverse{false};
29480 static constexpr auto mbr_ptr{&SgTemplateInstantiationDecl::p_nameResetFromMangledForm};
29481 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29482 using bind = Desc<SgTemplateInstantiationDecl, bool SgTemplateInstantiationDecl::*, &SgTemplateInstantiationDecl::p_nameResetFromMangledForm>;
29483};
29493template <> struct node_from_variant_t<737> { using type = SgTemplateInstantiationDecl; };
29494
29495// Class: TemplateInstantiationDefn
29498 using base = SgClassDefinition;
29499 static constexpr char const * const name{"TemplateInstantiationDefn"};
29500 static constexpr unsigned long variant{738};
29501 static constexpr bool concrete{true};
29502 using subclasses_t = mp::List<>;
29503 using fields_t = mp::List<>;
29504};
29505template <> struct node_from_variant_t<738> { using type = SgTemplateInstantiationDefn; };
29506
29507// Class: TemplateInstantiationDirectiveStatement
29511 static constexpr size_t position{0};
29512 static constexpr char const * const name{"declaration"};
29513 static constexpr char const * const typestr{"SgDeclarationStatement*"};
29514 static constexpr bool traverse{true};
29515 static constexpr auto mbr_ptr{&SgTemplateInstantiationDirectiveStatement::p_declaration};
29516 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29517 using bind = Desc<SgTemplateInstantiationDirectiveStatement, SgDeclarationStatement* SgTemplateInstantiationDirectiveStatement::*, &SgTemplateInstantiationDirectiveStatement::p_declaration>;
29518};
29519template <> struct describe_field_t<SgTemplateInstantiationDirectiveStatement,bool,&SgTemplateInstantiationDirectiveStatement::p_do_not_instantiate> {
29521 using field_type = bool;
29522 static constexpr size_t position{1};
29523 static constexpr char const * const name{"do_not_instantiate"};
29524 static constexpr char const * const typestr{"bool"};
29525 static constexpr bool traverse{false};
29526 static constexpr auto mbr_ptr{&SgTemplateInstantiationDirectiveStatement::p_do_not_instantiate};
29527 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29528 using bind = Desc<SgTemplateInstantiationDirectiveStatement, bool SgTemplateInstantiationDirectiveStatement::*, &SgTemplateInstantiationDirectiveStatement::p_do_not_instantiate>;
29529};
29539template <> struct node_from_variant_t<739> { using type = SgTemplateInstantiationDirectiveStatement; };
29540
29541// Class: TemplateInstantiationFunctionDecl
29544 using field_type = SgName;
29545 static constexpr size_t position{0};
29546 static constexpr char const * const name{"templateName"};
29547 static constexpr char const * const typestr{"SgName"};
29548 static constexpr bool traverse{false};
29549 static constexpr auto mbr_ptr{&SgTemplateInstantiationFunctionDecl::p_templateName};
29550 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29551 using bind = Desc<SgTemplateInstantiationFunctionDecl, SgName SgTemplateInstantiationFunctionDecl::*, &SgTemplateInstantiationFunctionDecl::p_templateName>;
29552};
29556 static constexpr size_t position{1};
29557 static constexpr char const * const name{"templateDeclaration"};
29558 static constexpr char const * const typestr{"SgTemplateFunctionDeclaration*"};
29559 static constexpr bool traverse{false};
29560 static constexpr auto mbr_ptr{&SgTemplateInstantiationFunctionDecl::p_templateDeclaration};
29561 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29562 using bind = Desc<SgTemplateInstantiationFunctionDecl, SgTemplateFunctionDeclaration* SgTemplateInstantiationFunctionDecl::*, &SgTemplateInstantiationFunctionDecl::p_templateDeclaration>;
29563};
29566 using field_type = SgTemplateArgumentPtrList;
29567 static constexpr size_t position{2};
29568 static constexpr char const * const name{"templateArguments"};
29569 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
29570 static constexpr bool traverse{false};
29571 static constexpr auto mbr_ptr{&SgTemplateInstantiationFunctionDecl::p_templateArguments};
29572 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29573 using bind = Desc<SgTemplateInstantiationFunctionDecl, SgTemplateArgumentPtrList SgTemplateInstantiationFunctionDecl::*, &SgTemplateInstantiationFunctionDecl::p_templateArguments>;
29574};
29577 using field_type = bool;
29578 static constexpr size_t position{3};
29579 static constexpr char const * const name{"nameResetFromMangledForm"};
29580 static constexpr char const * const typestr{"bool"};
29581 static constexpr bool traverse{false};
29583 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29584 using bind = Desc<SgTemplateInstantiationFunctionDecl, bool SgTemplateInstantiationFunctionDecl::*, &SgTemplateInstantiationFunctionDecl::p_nameResetFromMangledForm>;
29585};
29586template <> struct describe_field_t<SgTemplateInstantiationFunctionDecl,bool,&SgTemplateInstantiationFunctionDecl::p_template_argument_list_is_explicit> {
29588 using field_type = bool;
29589 static constexpr size_t position{4};
29590 static constexpr char const * const name{"template_argument_list_is_explicit"};
29591 static constexpr char const * const typestr{"bool"};
29592 static constexpr bool traverse{false};
29593 static constexpr auto mbr_ptr{&SgTemplateInstantiationFunctionDecl::p_template_argument_list_is_explicit};
29594 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29595 using bind = Desc<SgTemplateInstantiationFunctionDecl, bool SgTemplateInstantiationFunctionDecl::*, &SgTemplateInstantiationFunctionDecl::p_template_argument_list_is_explicit>;
29596};
29606template <> struct node_from_variant_t<740> { using type = SgTemplateInstantiationFunctionDecl; };
29607
29608// Class: TemplateInstantiationMemberFunctionDecl
29611 using field_type = SgName;
29612 static constexpr size_t position{0};
29613 static constexpr char const * const name{"templateName"};
29614 static constexpr char const * const typestr{"SgName"};
29615 static constexpr bool traverse{false};
29616 static constexpr auto mbr_ptr{&SgTemplateInstantiationMemberFunctionDecl::p_templateName};
29617 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29618 using bind = Desc<SgTemplateInstantiationMemberFunctionDecl, SgName SgTemplateInstantiationMemberFunctionDecl::*, &SgTemplateInstantiationMemberFunctionDecl::p_templateName>;
29619};
29623 static constexpr size_t position{1};
29624 static constexpr char const * const name{"templateDeclaration"};
29625 static constexpr char const * const typestr{"SgTemplateMemberFunctionDeclaration*"};
29626 static constexpr bool traverse{false};
29628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29629 using bind = Desc<SgTemplateInstantiationMemberFunctionDecl, SgTemplateMemberFunctionDeclaration* SgTemplateInstantiationMemberFunctionDecl::*, &SgTemplateInstantiationMemberFunctionDecl::p_templateDeclaration>;
29630};
29633 using field_type = SgTemplateArgumentPtrList;
29634 static constexpr size_t position{2};
29635 static constexpr char const * const name{"templateArguments"};
29636 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
29637 static constexpr bool traverse{false};
29639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29640 using bind = Desc<SgTemplateInstantiationMemberFunctionDecl, SgTemplateArgumentPtrList SgTemplateInstantiationMemberFunctionDecl::*, &SgTemplateInstantiationMemberFunctionDecl::p_templateArguments>;
29641};
29644 using field_type = bool;
29645 static constexpr size_t position{3};
29646 static constexpr char const * const name{"nameResetFromMangledForm"};
29647 static constexpr char const * const typestr{"bool"};
29648 static constexpr bool traverse{false};
29650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29651 using bind = Desc<SgTemplateInstantiationMemberFunctionDecl, bool SgTemplateInstantiationMemberFunctionDecl::*, &SgTemplateInstantiationMemberFunctionDecl::p_nameResetFromMangledForm>;
29652};
29653template <> struct describe_field_t<SgTemplateInstantiationMemberFunctionDecl,bool,&SgTemplateInstantiationMemberFunctionDecl::p_template_argument_list_is_explicit> {
29655 using field_type = bool;
29656 static constexpr size_t position{4};
29657 static constexpr char const * const name{"template_argument_list_is_explicit"};
29658 static constexpr char const * const typestr{"bool"};
29659 static constexpr bool traverse{false};
29660 static constexpr auto mbr_ptr{&SgTemplateInstantiationMemberFunctionDecl::p_template_argument_list_is_explicit};
29661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29662 using bind = Desc<SgTemplateInstantiationMemberFunctionDecl, bool SgTemplateInstantiationMemberFunctionDecl::*, &SgTemplateInstantiationMemberFunctionDecl::p_template_argument_list_is_explicit>;
29663};
29673template <> struct node_from_variant_t<741> { using type = SgTemplateInstantiationMemberFunctionDecl; };
29674
29675// Class: TemplateInstantiationTypedefDeclaration
29676template <> struct describe_field_t<SgTemplateInstantiationTypedefDeclaration,SgName,&SgTemplateInstantiationTypedefDeclaration::p_templateName> {
29678 using field_type = SgName;
29679 static constexpr size_t position{0};
29680 static constexpr char const * const name{"templateName"};
29681 static constexpr char const * const typestr{"SgName"};
29682 static constexpr bool traverse{false};
29683 static constexpr auto mbr_ptr{&SgTemplateInstantiationTypedefDeclaration::p_templateName};
29684 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29685 using bind = Desc<SgTemplateInstantiationTypedefDeclaration, SgName SgTemplateInstantiationTypedefDeclaration::*, &SgTemplateInstantiationTypedefDeclaration::p_templateName>;
29686};
29687template <> struct describe_field_t<SgTemplateInstantiationTypedefDeclaration,SgName,&SgTemplateInstantiationTypedefDeclaration::p_templateHeader> {
29689 using field_type = SgName;
29690 static constexpr size_t position{1};
29691 static constexpr char const * const name{"templateHeader"};
29692 static constexpr char const * const typestr{"SgName"};
29693 static constexpr bool traverse{false};
29694 static constexpr auto mbr_ptr{&SgTemplateInstantiationTypedefDeclaration::p_templateHeader};
29695 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29696 using bind = Desc<SgTemplateInstantiationTypedefDeclaration, SgName SgTemplateInstantiationTypedefDeclaration::*, &SgTemplateInstantiationTypedefDeclaration::p_templateHeader>;
29697};
29698template <> struct describe_field_t<SgTemplateInstantiationTypedefDeclaration,SgTemplateTypedefDeclaration*,&SgTemplateInstantiationTypedefDeclaration::p_templateDeclaration> {
29701 static constexpr size_t position{2};
29702 static constexpr char const * const name{"templateDeclaration"};
29703 static constexpr char const * const typestr{"SgTemplateTypedefDeclaration*"};
29704 static constexpr bool traverse{false};
29705 static constexpr auto mbr_ptr{&SgTemplateInstantiationTypedefDeclaration::p_templateDeclaration};
29706 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29707 using bind = Desc<SgTemplateInstantiationTypedefDeclaration, SgTemplateTypedefDeclaration* SgTemplateInstantiationTypedefDeclaration::*, &SgTemplateInstantiationTypedefDeclaration::p_templateDeclaration>;
29708};
29709template <> struct describe_field_t<SgTemplateInstantiationTypedefDeclaration,SgTemplateArgumentPtrList,&SgTemplateInstantiationTypedefDeclaration::p_templateArguments> {
29711 using field_type = SgTemplateArgumentPtrList;
29712 static constexpr size_t position{3};
29713 static constexpr char const * const name{"templateArguments"};
29714 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
29715 static constexpr bool traverse{false};
29716 static constexpr auto mbr_ptr{&SgTemplateInstantiationTypedefDeclaration::p_templateArguments};
29717 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29718 using bind = Desc<SgTemplateInstantiationTypedefDeclaration, SgTemplateArgumentPtrList SgTemplateInstantiationTypedefDeclaration::*, &SgTemplateInstantiationTypedefDeclaration::p_templateArguments>;
29719};
29720template <> struct describe_field_t<SgTemplateInstantiationTypedefDeclaration,bool,&SgTemplateInstantiationTypedefDeclaration::p_nameResetFromMangledForm> {
29722 using field_type = bool;
29723 static constexpr size_t position{4};
29724 static constexpr char const * const name{"nameResetFromMangledForm"};
29725 static constexpr char const * const typestr{"bool"};
29726 static constexpr bool traverse{false};
29727 static constexpr auto mbr_ptr{&SgTemplateInstantiationTypedefDeclaration::p_nameResetFromMangledForm};
29728 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29729 using bind = Desc<SgTemplateInstantiationTypedefDeclaration, bool SgTemplateInstantiationTypedefDeclaration::*, &SgTemplateInstantiationTypedefDeclaration::p_nameResetFromMangledForm>;
29730};
29740template <> struct node_from_variant_t<742> { using type = SgTemplateInstantiationTypedefDeclaration; };
29741
29742// Class: TemplateParameter
29743template <> struct describe_field_t<SgTemplateParameter,SgTemplateParameter::template_parameter_enum,&SgTemplateParameter::p_parameterType> {
29746 static constexpr size_t position{0};
29747 static constexpr char const * const name{"parameterType"};
29748 static constexpr char const * const typestr{"SgTemplateParameter::template_parameter_enum"};
29749 static constexpr bool traverse{false};
29750 static constexpr auto mbr_ptr{&SgTemplateParameter::p_parameterType};
29751 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29752 using bind = Desc<SgTemplateParameter, SgTemplateParameter::template_parameter_enum SgTemplateParameter::*, &SgTemplateParameter::p_parameterType>;
29753};
29754template <> struct describe_field_t<SgTemplateParameter,SgType*,&SgTemplateParameter::p_type> {
29756 using field_type = SgType*;
29757 static constexpr size_t position{1};
29758 static constexpr char const * const name{"type"};
29759 static constexpr char const * const typestr{"SgType*"};
29760 static constexpr bool traverse{false};
29761 static constexpr auto mbr_ptr{&SgTemplateParameter::p_type};
29762 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29763 using bind = Desc<SgTemplateParameter, SgType* SgTemplateParameter::*, &SgTemplateParameter::p_type>;
29764};
29765template <> struct describe_field_t<SgTemplateParameter,SgType*,&SgTemplateParameter::p_defaultTypeParameter> {
29767 using field_type = SgType*;
29768 static constexpr size_t position{2};
29769 static constexpr char const * const name{"defaultTypeParameter"};
29770 static constexpr char const * const typestr{"SgType*"};
29771 static constexpr bool traverse{false};
29772 static constexpr auto mbr_ptr{&SgTemplateParameter::p_defaultTypeParameter};
29773 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29774 using bind = Desc<SgTemplateParameter, SgType* SgTemplateParameter::*, &SgTemplateParameter::p_defaultTypeParameter>;
29775};
29776template <> struct describe_field_t<SgTemplateParameter,SgExpression*,&SgTemplateParameter::p_expression> {
29778 using field_type = SgExpression*;
29779 static constexpr size_t position{3};
29780 static constexpr char const * const name{"expression"};
29781 static constexpr char const * const typestr{"SgExpression*"};
29782 static constexpr bool traverse{true};
29783 static constexpr auto mbr_ptr{&SgTemplateParameter::p_expression};
29784 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29785 using bind = Desc<SgTemplateParameter, SgExpression* SgTemplateParameter::*, &SgTemplateParameter::p_expression>;
29786};
29787template <> struct describe_field_t<SgTemplateParameter,SgExpression*,&SgTemplateParameter::p_defaultExpressionParameter> {
29789 using field_type = SgExpression*;
29790 static constexpr size_t position{4};
29791 static constexpr char const * const name{"defaultExpressionParameter"};
29792 static constexpr char const * const typestr{"SgExpression*"};
29793 static constexpr bool traverse{true};
29794 static constexpr auto mbr_ptr{&SgTemplateParameter::p_defaultExpressionParameter};
29795 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29796 using bind = Desc<SgTemplateParameter, SgExpression* SgTemplateParameter::*, &SgTemplateParameter::p_defaultExpressionParameter>;
29797};
29798template <> struct describe_field_t<SgTemplateParameter,SgDeclarationStatement*,&SgTemplateParameter::p_templateDeclaration> {
29801 static constexpr size_t position{5};
29802 static constexpr char const * const name{"templateDeclaration"};
29803 static constexpr char const * const typestr{"SgDeclarationStatement*"};
29804 static constexpr bool traverse{true};
29805 static constexpr auto mbr_ptr{&SgTemplateParameter::p_templateDeclaration};
29806 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29807 using bind = Desc<SgTemplateParameter, SgDeclarationStatement* SgTemplateParameter::*, &SgTemplateParameter::p_templateDeclaration>;
29808};
29809template <> struct describe_field_t<SgTemplateParameter,SgDeclarationStatement*,&SgTemplateParameter::p_defaultTemplateDeclarationParameter> {
29812 static constexpr size_t position{6};
29813 static constexpr char const * const name{"defaultTemplateDeclarationParameter"};
29814 static constexpr char const * const typestr{"SgDeclarationStatement*"};
29815 static constexpr bool traverse{true};
29816 static constexpr auto mbr_ptr{&SgTemplateParameter::p_defaultTemplateDeclarationParameter};
29817 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29818 using bind = Desc<SgTemplateParameter, SgDeclarationStatement* SgTemplateParameter::*, &SgTemplateParameter::p_defaultTemplateDeclarationParameter>;
29819};
29820template <> struct describe_field_t<SgTemplateParameter,SgInitializedName*,&SgTemplateParameter::p_initializedName> {
29823 static constexpr size_t position{7};
29824 static constexpr char const * const name{"initializedName"};
29825 static constexpr char const * const typestr{"SgInitializedName*"};
29826 static constexpr bool traverse{true};
29827 static constexpr auto mbr_ptr{&SgTemplateParameter::p_initializedName};
29828 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29829 using bind = Desc<SgTemplateParameter, SgInitializedName* SgTemplateParameter::*, &SgTemplateParameter::p_initializedName>;
29830};
29840template <> struct node_from_variant_t<743> { using type = SgTemplateParameter; };
29841
29842// Class: TemplateParameterVal
29843template <> struct describe_field_t<SgTemplateParameterVal,int,&SgTemplateParameterVal::p_template_parameter_position> {
29845 using field_type = int;
29846 static constexpr size_t position{0};
29847 static constexpr char const * const name{"template_parameter_position"};
29848 static constexpr char const * const typestr{"int"};
29849 static constexpr bool traverse{false};
29850 static constexpr auto mbr_ptr{&SgTemplateParameterVal::p_template_parameter_position};
29851 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29852 using bind = Desc<SgTemplateParameterVal, int SgTemplateParameterVal::*, &SgTemplateParameterVal::p_template_parameter_position>;
29853};
29854template <> struct describe_field_t<SgTemplateParameterVal,std::string,&SgTemplateParameterVal::p_valueString> {
29856 using field_type = std::string;
29857 static constexpr size_t position{1};
29858 static constexpr char const * const name{"valueString"};
29859 static constexpr char const * const typestr{"std::string"};
29860 static constexpr bool traverse{false};
29861 static constexpr auto mbr_ptr{&SgTemplateParameterVal::p_valueString};
29862 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29863 using bind = Desc<SgTemplateParameterVal, std::string SgTemplateParameterVal::*, &SgTemplateParameterVal::p_valueString>;
29864};
29865template <> struct describe_field_t<SgTemplateParameterVal,SgType*,&SgTemplateParameterVal::p_valueType> {
29867 using field_type = SgType*;
29868 static constexpr size_t position{2};
29869 static constexpr char const * const name{"valueType"};
29870 static constexpr char const * const typestr{"SgType*"};
29871 static constexpr bool traverse{false};
29872 static constexpr auto mbr_ptr{&SgTemplateParameterVal::p_valueType};
29873 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29874 using bind = Desc<SgTemplateParameterVal, SgType* SgTemplateParameterVal::*, &SgTemplateParameterVal::p_valueType>;
29875};
29878 using base = SgValueExp;
29879 static constexpr char const * const name{"TemplateParameterVal"};
29880 static constexpr unsigned long variant{744};
29881 static constexpr bool concrete{true};
29882 using subclasses_t = mp::List<>;
29884};
29885template <> struct node_from_variant_t<744> { using type = SgTemplateParameterVal; };
29886
29887// Class: TemplateParameterList
29888template <> struct describe_field_t<SgTemplateParameterList,SgTemplateParameterPtrList,&SgTemplateParameterList::p_args> {
29890 using field_type = SgTemplateParameterPtrList;
29891 static constexpr size_t position{0};
29892 static constexpr char const * const name{"args"};
29893 static constexpr char const * const typestr{"SgTemplateParameterPtrList"};
29894 static constexpr bool traverse{true};
29895 static constexpr auto mbr_ptr{&SgTemplateParameterList::p_args};
29896 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29897 using bind = Desc<SgTemplateParameterList, SgTemplateParameterPtrList SgTemplateParameterList::*, &SgTemplateParameterList::p_args>;
29898};
29901 using base = SgSupport;
29902 static constexpr char const * const name{"TemplateParameterList"};
29903 static constexpr unsigned long variant{745};
29904 static constexpr bool concrete{true};
29905 using subclasses_t = mp::List<>;
29907};
29908template <> struct node_from_variant_t<745> { using type = SgTemplateParameterList; };
29909
29910// Class: TemplateSymbol
29911template <> struct describe_field_t<SgTemplateSymbol,SgTemplateDeclaration*,&SgTemplateSymbol::p_declaration> {
29912 using parent = SgTemplateSymbol;
29914 static constexpr size_t position{0};
29915 static constexpr char const * const name{"declaration"};
29916 static constexpr char const * const typestr{"SgTemplateDeclaration*"};
29917 static constexpr bool traverse{true};
29918 static constexpr auto mbr_ptr{&SgTemplateSymbol::p_declaration};
29919 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29920 using bind = Desc<SgTemplateSymbol, SgTemplateDeclaration* SgTemplateSymbol::*, &SgTemplateSymbol::p_declaration>;
29921};
29923 using node = SgTemplateSymbol;
29924 using base = SgSymbol;
29925 static constexpr char const * const name{"TemplateSymbol"};
29926 static constexpr unsigned long variant{746};
29927 static constexpr bool concrete{true};
29928 using subclasses_t = mp::List<>;
29930};
29931template <> struct node_from_variant_t<746> { using type = SgTemplateSymbol; };
29932
29933// Class: TemplateType
29934template <> struct describe_field_t<SgTemplateType,SgName,&SgTemplateType::p_name> {
29935 using parent = SgTemplateType;
29936 using field_type = SgName;
29937 static constexpr size_t position{0};
29938 static constexpr char const * const name{"name"};
29939 static constexpr char const * const typestr{"SgName"};
29940 static constexpr bool traverse{false};
29941 static constexpr auto mbr_ptr{&SgTemplateType::p_name};
29942 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29943 using bind = Desc<SgTemplateType, SgName SgTemplateType::*, &SgTemplateType::p_name>;
29944};
29945template <> struct describe_field_t<SgTemplateType,int,&SgTemplateType::p_template_parameter_position> {
29946 using parent = SgTemplateType;
29947 using field_type = int;
29948 static constexpr size_t position{1};
29949 static constexpr char const * const name{"template_parameter_position"};
29950 static constexpr char const * const typestr{"int"};
29951 static constexpr bool traverse{false};
29952 static constexpr auto mbr_ptr{&SgTemplateType::p_template_parameter_position};
29953 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29954 using bind = Desc<SgTemplateType, int SgTemplateType::*, &SgTemplateType::p_template_parameter_position>;
29955};
29956template <> struct describe_field_t<SgTemplateType,int,&SgTemplateType::p_template_parameter_depth> {
29957 using parent = SgTemplateType;
29958 using field_type = int;
29959 static constexpr size_t position{2};
29960 static constexpr char const * const name{"template_parameter_depth"};
29961 static constexpr char const * const typestr{"int"};
29962 static constexpr bool traverse{false};
29963 static constexpr auto mbr_ptr{&SgTemplateType::p_template_parameter_depth};
29964 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29965 using bind = Desc<SgTemplateType, int SgTemplateType::*, &SgTemplateType::p_template_parameter_depth>;
29966};
29967template <> struct describe_field_t<SgTemplateType,SgType *,&SgTemplateType::p_class_type> {
29968 using parent = SgTemplateType;
29969 using field_type = SgType *;
29970 static constexpr size_t position{3};
29971 static constexpr char const * const name{"class_type"};
29972 static constexpr char const * const typestr{"SgType *"};
29973 static constexpr bool traverse{true};
29974 static constexpr auto mbr_ptr{&SgTemplateType::p_class_type};
29975 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29976 using bind = Desc<SgTemplateType, SgType * SgTemplateType::*, &SgTemplateType::p_class_type>;
29977};
29978template <> struct describe_field_t<SgTemplateType,SgType *,&SgTemplateType::p_parent_class_type> {
29979 using parent = SgTemplateType;
29980 using field_type = SgType *;
29981 static constexpr size_t position{4};
29982 static constexpr char const * const name{"parent_class_type"};
29983 static constexpr char const * const typestr{"SgType *"};
29984 static constexpr bool traverse{true};
29985 static constexpr auto mbr_ptr{&SgTemplateType::p_parent_class_type};
29986 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29987 using bind = Desc<SgTemplateType, SgType * SgTemplateType::*, &SgTemplateType::p_parent_class_type>;
29988};
29989template <> struct describe_field_t<SgTemplateType,SgTemplateParameter *,&SgTemplateType::p_template_parameter> {
29990 using parent = SgTemplateType;
29992 static constexpr size_t position{5};
29993 static constexpr char const * const name{"template_parameter"};
29994 static constexpr char const * const typestr{"SgTemplateParameter *"};
29995 static constexpr bool traverse{true};
29996 static constexpr auto mbr_ptr{&SgTemplateType::p_template_parameter};
29997 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
29998 using bind = Desc<SgTemplateType, SgTemplateParameter * SgTemplateType::*, &SgTemplateType::p_template_parameter>;
29999};
30000template <> struct describe_field_t<SgTemplateType,SgTemplateArgumentPtrList,&SgTemplateType::p_tpl_args> {
30001 using parent = SgTemplateType;
30002 using field_type = SgTemplateArgumentPtrList;
30003 static constexpr size_t position{6};
30004 static constexpr char const * const name{"tpl_args"};
30005 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
30006 static constexpr bool traverse{false};
30007 static constexpr auto mbr_ptr{&SgTemplateType::p_tpl_args};
30008 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30009 using bind = Desc<SgTemplateType, SgTemplateArgumentPtrList SgTemplateType::*, &SgTemplateType::p_tpl_args>;
30010};
30011template <> struct describe_field_t<SgTemplateType,SgTemplateArgumentPtrList,&SgTemplateType::p_part_spec_tpl_args> {
30012 using parent = SgTemplateType;
30013 using field_type = SgTemplateArgumentPtrList;
30014 static constexpr size_t position{7};
30015 static constexpr char const * const name{"part_spec_tpl_args"};
30016 static constexpr char const * const typestr{"SgTemplateArgumentPtrList"};
30017 static constexpr bool traverse{false};
30018 static constexpr auto mbr_ptr{&SgTemplateType::p_part_spec_tpl_args};
30019 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30020 using bind = Desc<SgTemplateType, SgTemplateArgumentPtrList SgTemplateType::*, &SgTemplateType::p_part_spec_tpl_args>;
30021};
30022template <> struct describe_field_t<SgTemplateType,bool,&SgTemplateType::p_packed> {
30023 using parent = SgTemplateType;
30024 using field_type = bool;
30025 static constexpr size_t position{8};
30026 static constexpr char const * const name{"packed"};
30027 static constexpr char const * const typestr{"bool"};
30028 static constexpr bool traverse{false};
30029 static constexpr auto mbr_ptr{&SgTemplateType::p_packed};
30030 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30031 using bind = Desc<SgTemplateType, bool SgTemplateType::*, &SgTemplateType::p_packed>;
30032};
30042template <> struct node_from_variant_t<747> { using type = SgTemplateType; };
30043
30044// Class: ThisExp
30046 using parent = SgThisExp;
30047 using field_type = SgClassSymbol*;
30048 static constexpr size_t position{0};
30049 static constexpr char const * const name{"class_symbol"};
30050 static constexpr char const * const typestr{"SgClassSymbol*"};
30051 static constexpr bool traverse{false};
30052 static constexpr auto mbr_ptr{&SgThisExp::p_class_symbol};
30053 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30054 using bind = Desc<SgThisExp, SgClassSymbol* SgThisExp::*, &SgThisExp::p_class_symbol>;
30055};
30056template <> struct describe_field_t<SgThisExp,SgNonrealSymbol*,&SgThisExp::p_nonreal_symbol> {
30057 using parent = SgThisExp;
30058 using field_type = SgNonrealSymbol*;
30059 static constexpr size_t position{1};
30060 static constexpr char const * const name{"nonreal_symbol"};
30061 static constexpr char const * const typestr{"SgNonrealSymbol*"};
30062 static constexpr bool traverse{false};
30063 static constexpr auto mbr_ptr{&SgThisExp::p_nonreal_symbol};
30064 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30065 using bind = Desc<SgThisExp, SgNonrealSymbol* SgThisExp::*, &SgThisExp::p_nonreal_symbol>;
30066};
30068 using parent = SgThisExp;
30069 using field_type = int;
30070 static constexpr size_t position{2};
30071 static constexpr char const * const name{"pobj_this"};
30072 static constexpr char const * const typestr{"int"};
30073 static constexpr bool traverse{false};
30074 static constexpr auto mbr_ptr{&SgThisExp::p_pobj_this};
30075 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30076 using bind = Desc<SgThisExp, int SgThisExp::*, &SgThisExp::p_pobj_this>;
30077};
30078template <> struct describe_node_t<SgThisExp> {
30079 using node = SgThisExp;
30080 using base = SgExpression;
30081 static constexpr char const * const name{"ThisExp"};
30082 static constexpr unsigned long variant{748};
30083 static constexpr bool concrete{true};
30084 using subclasses_t = mp::List<>;
30086};
30087template <> struct node_from_variant_t<748> { using type = SgThisExp; };
30088
30089// Class: TypeTraitBuiltinOperator
30090template <> struct describe_field_t<SgTypeTraitBuiltinOperator,SgName,&SgTypeTraitBuiltinOperator::p_name> {
30092 using field_type = SgName;
30093 static constexpr size_t position{0};
30094 static constexpr char const * const name{"name"};
30095 static constexpr char const * const typestr{"SgName"};
30096 static constexpr bool traverse{false};
30097 static constexpr auto mbr_ptr{&SgTypeTraitBuiltinOperator::p_name};
30098 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30099 using bind = Desc<SgTypeTraitBuiltinOperator, SgName SgTypeTraitBuiltinOperator::*, &SgTypeTraitBuiltinOperator::p_name>;
30100};
30101template <> struct describe_field_t<SgTypeTraitBuiltinOperator,SgNodePtrList,&SgTypeTraitBuiltinOperator::p_args> {
30103 using field_type = SgNodePtrList;
30104 static constexpr size_t position{1};
30105 static constexpr char const * const name{"args"};
30106 static constexpr char const * const typestr{"SgNodePtrList"};
30107 static constexpr bool traverse{false};
30108 static constexpr auto mbr_ptr{&SgTypeTraitBuiltinOperator::p_args};
30109 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30110 using bind = Desc<SgTypeTraitBuiltinOperator, SgNodePtrList SgTypeTraitBuiltinOperator::*, &SgTypeTraitBuiltinOperator::p_args>;
30111};
30114 using base = SgExpression;
30115 static constexpr char const * const name{"TypeTraitBuiltinOperator"};
30116 static constexpr unsigned long variant{749};
30117 static constexpr bool concrete{true};
30118 using subclasses_t = mp::List<>;
30120};
30121template <> struct node_from_variant_t<749> { using type = SgTypeTraitBuiltinOperator; };
30122
30123// Class: SuperExp
30124template <> struct describe_field_t<SgSuperExp,SgClassSymbol*,&SgSuperExp::p_class_symbol> {
30125 using parent = SgSuperExp;
30126 using field_type = SgClassSymbol*;
30127 static constexpr size_t position{0};
30128 static constexpr char const * const name{"class_symbol"};
30129 static constexpr char const * const typestr{"SgClassSymbol*"};
30130 static constexpr bool traverse{false};
30131 static constexpr auto mbr_ptr{&SgSuperExp::p_class_symbol};
30132 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30133 using bind = Desc<SgSuperExp, SgClassSymbol* SgSuperExp::*, &SgSuperExp::p_class_symbol>;
30134};
30135template <> struct describe_field_t<SgSuperExp,int,&SgSuperExp::p_pobj_super> {
30136 using parent = SgSuperExp;
30137 using field_type = int;
30138 static constexpr size_t position{1};
30139 static constexpr char const * const name{"pobj_super"};
30140 static constexpr char const * const typestr{"int"};
30141 static constexpr bool traverse{false};
30142 static constexpr auto mbr_ptr{&SgSuperExp::p_pobj_super};
30143 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30144 using bind = Desc<SgSuperExp, int SgSuperExp::*, &SgSuperExp::p_pobj_super>;
30145};
30146template <> struct describe_node_t<SgSuperExp> {
30147 using node = SgSuperExp;
30148 using base = SgExpression;
30149 static constexpr char const * const name{"SuperExp"};
30150 static constexpr unsigned long variant{750};
30151 static constexpr bool concrete{true};
30152 using subclasses_t = mp::List<>;
30154};
30155template <> struct node_from_variant_t<750> { using type = SgSuperExp; };
30156
30157// Class: ThrowOp
30159 using parent = SgThrowOp;
30161 static constexpr size_t position{0};
30162 static constexpr char const * const name{"throwKind"};
30163 static constexpr char const * const typestr{"SgThrowOp::e_throw_kind"};
30164 static constexpr bool traverse{false};
30165 static constexpr auto mbr_ptr{&SgThrowOp::p_throwKind};
30166 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30167 using bind = Desc<SgThrowOp, SgThrowOp::e_throw_kind SgThrowOp::*, &SgThrowOp::p_throwKind>;
30168};
30169template <> struct describe_node_t<SgThrowOp> {
30170 using node = SgThrowOp;
30171 using base = SgUnaryOp;
30172 static constexpr char const * const name{"ThrowOp"};
30173 static constexpr unsigned long variant{751};
30174 static constexpr bool concrete{true};
30175 using subclasses_t = mp::List<>;
30177};
30178template <> struct node_from_variant_t<751> { using type = SgThrowOp; };
30179
30180// Class: Token
30181template <> struct describe_field_t<SgToken,std::string,&SgToken::p_lexeme_string> {
30182 using parent = SgToken;
30183 using field_type = std::string;
30184 static constexpr size_t position{0};
30185 static constexpr char const * const name{"lexeme_string"};
30186 static constexpr char const * const typestr{"std::string"};
30187 static constexpr bool traverse{false};
30188 static constexpr auto mbr_ptr{&SgToken::p_lexeme_string};
30189 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30190 using bind = Desc<SgToken, std::string SgToken::*, &SgToken::p_lexeme_string>;
30191};
30192template <> struct describe_field_t<SgToken,unsigned int,&SgToken::p_classification_code> {
30193 using parent = SgToken;
30194 using field_type = unsigned int;
30195 static constexpr size_t position{1};
30196 static constexpr char const * const name{"classification_code"};
30197 static constexpr char const * const typestr{"unsigned int"};
30198 static constexpr bool traverse{false};
30199 static constexpr auto mbr_ptr{&SgToken::p_classification_code};
30200 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30201 using bind = Desc<SgToken, unsigned int SgToken::*, &SgToken::p_classification_code>;
30202};
30203template <> struct describe_node_t<SgToken> {
30204 using node = SgToken;
30205 using base = SgLocatedNode;
30206 static constexpr char const * const name{"Token"};
30207 static constexpr unsigned long variant{752};
30208 static constexpr bool concrete{true};
30209 using subclasses_t = mp::List<>;
30211};
30212template <> struct node_from_variant_t<752> { using type = SgToken; };
30213
30214// Class: TryStmt
30216 using parent = SgTryStmt;
30217 using field_type = SgStatement*;
30218 static constexpr size_t position{0};
30219 static constexpr char const * const name{"body"};
30220 static constexpr char const * const typestr{"SgStatement*"};
30221 static constexpr bool traverse{true};
30222 static constexpr auto mbr_ptr{&SgTryStmt::p_body};
30223 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30224 using bind = Desc<SgTryStmt, SgStatement* SgTryStmt::*, &SgTryStmt::p_body>;
30225};
30227 using parent = SgTryStmt;
30229 static constexpr size_t position{1};
30230 static constexpr char const * const name{"catch_statement_seq_root"};
30231 static constexpr char const * const typestr{"SgCatchStatementSeq*"};
30232 static constexpr bool traverse{true};
30233 static constexpr auto mbr_ptr{&SgTryStmt::p_catch_statement_seq_root};
30234 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30235 using bind = Desc<SgTryStmt, SgCatchStatementSeq* SgTryStmt::*, &SgTryStmt::p_catch_statement_seq_root>;
30236};
30238 using parent = SgTryStmt;
30239 using field_type = SgStatement*;
30240 static constexpr size_t position{2};
30241 static constexpr char const * const name{"else_body"};
30242 static constexpr char const * const typestr{"SgStatement*"};
30243 static constexpr bool traverse{true};
30244 static constexpr auto mbr_ptr{&SgTryStmt::p_else_body};
30245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30246 using bind = Desc<SgTryStmt, SgStatement* SgTryStmt::*, &SgTryStmt::p_else_body>;
30247};
30249 using parent = SgTryStmt;
30250 using field_type = SgStatement*;
30251 static constexpr size_t position{3};
30252 static constexpr char const * const name{"finally_body"};
30253 static constexpr char const * const typestr{"SgStatement*"};
30254 static constexpr bool traverse{true};
30255 static constexpr auto mbr_ptr{&SgTryStmt::p_finally_body};
30256 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30257 using bind = Desc<SgTryStmt, SgStatement* SgTryStmt::*, &SgTryStmt::p_finally_body>;
30258};
30259template <> struct describe_node_t<SgTryStmt> {
30260 using node = SgTryStmt;
30261 using base = SgStatement;
30262 static constexpr char const * const name{"TryStmt"};
30263 static constexpr unsigned long variant{753};
30264 static constexpr bool concrete{true};
30265 using subclasses_t = mp::List<>;
30267};
30268template <> struct node_from_variant_t<753> { using type = SgTryStmt; };
30269
30270// Class: TupleExp
30271template <> struct describe_node_t<SgTupleExp> {
30272 using node = SgTupleExp;
30273 using base = SgExprListExp;
30274 static constexpr char const * const name{"TupleExp"};
30275 static constexpr unsigned long variant{754};
30276 static constexpr bool concrete{true};
30277 using subclasses_t = mp::List<>;
30278 using fields_t = mp::List<>;
30279};
30280template <> struct node_from_variant_t<754> { using type = SgTupleExp; };
30281
30282// Class: Type
30283template <> struct describe_field_t<SgType,bool,&SgType::p_isCoArray> {
30284 using parent = SgType;
30285 using field_type = bool;
30286 static constexpr size_t position{0};
30287 static constexpr char const * const name{"isCoArray"};
30288 static constexpr char const * const typestr{"bool"};
30289 static constexpr bool traverse{false};
30290 static constexpr auto mbr_ptr{&SgType::p_isCoArray};
30291 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30292 using bind = Desc<SgType, bool SgType::*, &SgType::p_isCoArray>;
30293};
30295 using parent = SgType;
30296 using field_type = int;
30297 static constexpr size_t position{1};
30298 static constexpr char const * const name{"substitutedForTemplateParam"};
30299 static constexpr char const * const typestr{"int"};
30300 static constexpr bool traverse{false};
30301 static constexpr auto mbr_ptr{&SgType::p_substitutedForTemplateParam};
30302 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30303 using bind = Desc<SgType, int SgType::*, &SgType::p_substitutedForTemplateParam>;
30304};
30306 using parent = SgType;
30307 using field_type = SgReferenceType*;
30308 static constexpr size_t position{2};
30309 static constexpr char const * const name{"ref_to"};
30310 static constexpr char const * const typestr{"SgReferenceType*"};
30311 static constexpr bool traverse{false};
30312 static constexpr auto mbr_ptr{&SgType::p_ref_to};
30313 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30314 using bind = Desc<SgType, SgReferenceType* SgType::*, &SgType::p_ref_to>;
30315};
30317 using parent = SgType;
30318 using field_type = SgPointerType*;
30319 static constexpr size_t position{3};
30320 static constexpr char const * const name{"ptr_to"};
30321 static constexpr char const * const typestr{"SgPointerType*"};
30322 static constexpr bool traverse{false};
30323 static constexpr auto mbr_ptr{&SgType::p_ptr_to};
30324 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30325 using bind = Desc<SgType, SgPointerType* SgType::*, &SgType::p_ptr_to>;
30326};
30328 using parent = SgType;
30329 using field_type = SgModifierNodes*;
30330 static constexpr size_t position{4};
30331 static constexpr char const * const name{"modifiers"};
30332 static constexpr char const * const typestr{"SgModifierNodes*"};
30333 static constexpr bool traverse{false};
30334 static constexpr auto mbr_ptr{&SgType::p_modifiers};
30335 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30336 using bind = Desc<SgType, SgModifierNodes* SgType::*, &SgType::p_modifiers>;
30337};
30339 using parent = SgType;
30340 using field_type = SgTypedefSeq*;
30341 static constexpr size_t position{5};
30342 static constexpr char const * const name{"typedefs"};
30343 static constexpr char const * const typestr{"SgTypedefSeq*"};
30344 static constexpr bool traverse{false};
30345 static constexpr auto mbr_ptr{&SgType::p_typedefs};
30346 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30347 using bind = Desc<SgType, SgTypedefSeq* SgType::*, &SgType::p_typedefs>;
30348};
30349template <> struct describe_field_t<SgType,SgRvalueReferenceType*,&SgType::p_rvalue_ref_to> {
30350 using parent = SgType;
30352 static constexpr size_t position{6};
30353 static constexpr char const * const name{"rvalue_ref_to"};
30354 static constexpr char const * const typestr{"SgRvalueReferenceType*"};
30355 static constexpr bool traverse{false};
30356 static constexpr auto mbr_ptr{&SgType::p_rvalue_ref_to};
30357 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30358 using bind = Desc<SgType, SgRvalueReferenceType* SgType::*, &SgType::p_rvalue_ref_to>;
30359};
30360template <> struct describe_field_t<SgType,SgDeclType*,&SgType::p_decltype_ref_to> {
30361 using parent = SgType;
30362 using field_type = SgDeclType*;
30363 static constexpr size_t position{7};
30364 static constexpr char const * const name{"decltype_ref_to"};
30365 static constexpr char const * const typestr{"SgDeclType*"};
30366 static constexpr bool traverse{false};
30367 static constexpr auto mbr_ptr{&SgType::p_decltype_ref_to};
30368 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30369 using bind = Desc<SgType, SgDeclType* SgType::*, &SgType::p_decltype_ref_to>;
30370};
30371template <> struct describe_field_t<SgType,SgTypeOfType*,&SgType::p_typeof_ref_to> {
30372 using parent = SgType;
30373 using field_type = SgTypeOfType*;
30374 static constexpr size_t position{8};
30375 static constexpr char const * const name{"typeof_ref_to"};
30376 static constexpr char const * const typestr{"SgTypeOfType*"};
30377 static constexpr bool traverse{false};
30378 static constexpr auto mbr_ptr{&SgType::p_typeof_ref_to};
30379 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30380 using bind = Desc<SgType, SgTypeOfType* SgType::*, &SgType::p_typeof_ref_to>;
30381};
30382template <> struct describe_field_t<SgType,SgExpression*,&SgType::p_type_kind> {
30383 using parent = SgType;
30384 using field_type = SgExpression*;
30385 static constexpr size_t position{9};
30386 static constexpr char const * const name{"type_kind"};
30387 static constexpr char const * const typestr{"SgExpression*"};
30388 static constexpr bool traverse{true};
30389 static constexpr auto mbr_ptr{&SgType::p_type_kind};
30390 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30391 using bind = Desc<SgType, SgExpression* SgType::*, &SgType::p_type_kind>;
30392};
30393template <> struct describe_field_t<SgType,bool,&SgType::p_hasTypeKindStar> {
30394 using parent = SgType;
30395 using field_type = bool;
30396 static constexpr size_t position{10};
30397 static constexpr char const * const name{"hasTypeKindStar"};
30398 static constexpr char const * const typestr{"bool"};
30399 static constexpr bool traverse{false};
30400 static constexpr auto mbr_ptr{&SgType::p_hasTypeKindStar};
30401 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30402 using bind = Desc<SgType, bool SgType::*, &SgType::p_hasTypeKindStar>;
30403};
30404template <> struct describe_field_t<SgType,AstAttributeMechanism*,&SgType::p_attributeMechanism> {
30405 using parent = SgType;
30407 static constexpr size_t position{11};
30408 static constexpr char const * const name{"attributeMechanism"};
30409 static constexpr char const * const typestr{"AstAttributeMechanism*"};
30410 static constexpr bool traverse{false};
30411 static constexpr auto mbr_ptr{&SgType::p_attributeMechanism};
30412 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30413 using bind = Desc<SgType, AstAttributeMechanism* SgType::*, &SgType::p_attributeMechanism>;
30414};
30415template <> struct describe_node_t<SgType> {
30416 using node = SgType;
30417 using base = SgNode;
30418 static constexpr char const * const name{"Type"};
30419 static constexpr unsigned long variant{755};
30420 static constexpr bool concrete{false};
30423};
30424template <> struct node_from_variant_t<755> { using type = SgType; };
30425
30426// Class: TypeBool
30427template <> struct describe_node_t<SgTypeBool> {
30428 using node = SgTypeBool;
30429 using base = SgType;
30430 static constexpr char const * const name{"TypeBool"};
30431 static constexpr unsigned long variant{756};
30432 static constexpr bool concrete{true};
30433 using subclasses_t = mp::List<>;
30434 using fields_t = mp::List<>;
30435};
30436template <> struct node_from_variant_t<756> { using type = SgTypeBool; };
30437
30438// Class: TypeChar
30439template <> struct describe_node_t<SgTypeChar> {
30440 using node = SgTypeChar;
30441 using base = SgType;
30442 static constexpr char const * const name{"TypeChar"};
30443 static constexpr unsigned long variant{757};
30444 static constexpr bool concrete{true};
30445 using subclasses_t = mp::List<>;
30446 using fields_t = mp::List<>;
30447};
30448template <> struct node_from_variant_t<757> { using type = SgTypeChar; };
30449
30450// Class: TypeChar16
30451template <> struct describe_node_t<SgTypeChar16> {
30452 using node = SgTypeChar16;
30453 using base = SgType;
30454 static constexpr char const * const name{"TypeChar16"};
30455 static constexpr unsigned long variant{758};
30456 static constexpr bool concrete{true};
30457 using subclasses_t = mp::List<>;
30458 using fields_t = mp::List<>;
30459};
30460template <> struct node_from_variant_t<758> { using type = SgTypeChar16; };
30461
30462// Class: TypeChar32
30463template <> struct describe_node_t<SgTypeChar32> {
30464 using node = SgTypeChar32;
30465 using base = SgType;
30466 static constexpr char const * const name{"TypeChar32"};
30467 static constexpr unsigned long variant{759};
30468 static constexpr bool concrete{true};
30469 using subclasses_t = mp::List<>;
30470 using fields_t = mp::List<>;
30471};
30472template <> struct node_from_variant_t<759> { using type = SgTypeChar32; };
30473
30474// Class: TypeComplex
30475template <> struct describe_field_t<SgTypeComplex,SgType*,&SgTypeComplex::p_base_type> {
30476 using parent = SgTypeComplex;
30477 using field_type = SgType*;
30478 static constexpr size_t position{0};
30479 static constexpr char const * const name{"base_type"};
30480 static constexpr char const * const typestr{"SgType*"};
30481 static constexpr bool traverse{false};
30482 static constexpr auto mbr_ptr{&SgTypeComplex::p_base_type};
30483 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30484 using bind = Desc<SgTypeComplex, SgType* SgTypeComplex::*, &SgTypeComplex::p_base_type>;
30485};
30486template <> struct describe_node_t<SgTypeComplex> {
30487 using node = SgTypeComplex;
30488 using base = SgType;
30489 static constexpr char const * const name{"TypeComplex"};
30490 static constexpr unsigned long variant{760};
30491 static constexpr bool concrete{true};
30492 using subclasses_t = mp::List<>;
30494};
30495template <> struct node_from_variant_t<760> { using type = SgTypeComplex; };
30496
30497// Class: TypeDefault
30498template <> struct describe_field_t<SgTypeDefault,SgName,&SgTypeDefault::p_name> {
30499 using parent = SgTypeDefault;
30500 using field_type = SgName;
30501 static constexpr size_t position{0};
30502 static constexpr char const * const name{"name"};
30503 static constexpr char const * const typestr{"SgName"};
30504 static constexpr bool traverse{false};
30505 static constexpr auto mbr_ptr{&SgTypeDefault::p_name};
30506 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30507 using bind = Desc<SgTypeDefault, SgName SgTypeDefault::*, &SgTypeDefault::p_name>;
30508};
30509template <> struct describe_node_t<SgTypeDefault> {
30510 using node = SgTypeDefault;
30511 using base = SgType;
30512 static constexpr char const * const name{"TypeDefault"};
30513 static constexpr unsigned long variant{761};
30514 static constexpr bool concrete{true};
30515 using subclasses_t = mp::List<>;
30517};
30518template <> struct node_from_variant_t<761> { using type = SgTypeDefault; };
30519
30520// Class: TypeExpression
30521template <> struct describe_field_t<SgTypeExpression,SgType*,&SgTypeExpression::p_type> {
30522 using parent = SgTypeExpression;
30523 using field_type = SgType*;
30524 static constexpr size_t position{0};
30525 static constexpr char const * const name{"type"};
30526 static constexpr char const * const typestr{"SgType*"};
30527 static constexpr bool traverse{false};
30528 static constexpr auto mbr_ptr{&SgTypeExpression::p_type};
30529 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30530 using bind = Desc<SgTypeExpression, SgType* SgTypeExpression::*, &SgTypeExpression::p_type>;
30531};
30533 using node = SgTypeExpression;
30534 using base = SgExpression;
30535 static constexpr char const * const name{"TypeExpression"};
30536 static constexpr unsigned long variant{762};
30537 static constexpr bool concrete{true};
30538 using subclasses_t = mp::List<>;
30540};
30541template <> struct node_from_variant_t<762> { using type = SgTypeExpression; };
30542
30543// Class: TypeLabel
30544template <> struct describe_field_t<SgTypeLabel,SgName,&SgTypeLabel::p_name> {
30545 using parent = SgTypeLabel;
30546 using field_type = SgName;
30547 static constexpr size_t position{0};
30548 static constexpr char const * const name{"name"};
30549 static constexpr char const * const typestr{"SgName"};
30550 static constexpr bool traverse{false};
30551 static constexpr auto mbr_ptr{&SgTypeLabel::p_name};
30552 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30553 using bind = Desc<SgTypeLabel, SgName SgTypeLabel::*, &SgTypeLabel::p_name>;
30554};
30555template <> struct describe_node_t<SgTypeLabel> {
30556 using node = SgTypeLabel;
30557 using base = SgType;
30558 static constexpr char const * const name{"TypeLabel"};
30559 static constexpr unsigned long variant{763};
30560 static constexpr bool concrete{true};
30561 using subclasses_t = mp::List<>;
30563};
30564template <> struct node_from_variant_t<763> { using type = SgTypeLabel; };
30565
30566// Class: TypeDouble
30567template <> struct describe_node_t<SgTypeDouble> {
30568 using node = SgTypeDouble;
30569 using base = SgType;
30570 static constexpr char const * const name{"TypeDouble"};
30571 static constexpr unsigned long variant{764};
30572 static constexpr bool concrete{true};
30573 using subclasses_t = mp::List<>;
30574 using fields_t = mp::List<>;
30575};
30576template <> struct node_from_variant_t<764> { using type = SgTypeDouble; };
30577
30578// Class: TypeEllipse
30579template <> struct describe_node_t<SgTypeEllipse> {
30580 using node = SgTypeEllipse;
30581 using base = SgType;
30582 static constexpr char const * const name{"TypeEllipse"};
30583 static constexpr unsigned long variant{765};
30584 static constexpr bool concrete{true};
30585 using subclasses_t = mp::List<>;
30586 using fields_t = mp::List<>;
30587};
30588template <> struct node_from_variant_t<765> { using type = SgTypeEllipse; };
30589
30590// Class: TypeFixed
30591template <> struct describe_field_t<SgTypeFixed,SgExpression*,&SgTypeFixed::p_scale> {
30592 using parent = SgTypeFixed;
30593 using field_type = SgExpression*;
30594 static constexpr size_t position{0};
30595 static constexpr char const * const name{"scale"};
30596 static constexpr char const * const typestr{"SgExpression*"};
30597 static constexpr bool traverse{true};
30598 static constexpr auto mbr_ptr{&SgTypeFixed::p_scale};
30599 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30600 using bind = Desc<SgTypeFixed, SgExpression* SgTypeFixed::*, &SgTypeFixed::p_scale>;
30601};
30602template <> struct describe_field_t<SgTypeFixed,SgExpression*,&SgTypeFixed::p_fraction> {
30603 using parent = SgTypeFixed;
30604 using field_type = SgExpression*;
30605 static constexpr size_t position{1};
30606 static constexpr char const * const name{"fraction"};
30607 static constexpr char const * const typestr{"SgExpression*"};
30608 static constexpr bool traverse{true};
30609 static constexpr auto mbr_ptr{&SgTypeFixed::p_fraction};
30610 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30611 using bind = Desc<SgTypeFixed, SgExpression* SgTypeFixed::*, &SgTypeFixed::p_fraction>;
30612};
30613template <> struct describe_node_t<SgTypeFixed> {
30614 using node = SgTypeFixed;
30615 using base = SgType;
30616 static constexpr char const * const name{"TypeFixed"};
30617 static constexpr unsigned long variant{766};
30618 static constexpr bool concrete{true};
30619 using subclasses_t = mp::List<>;
30621};
30622template <> struct node_from_variant_t<766> { using type = SgTypeFixed; };
30623
30624// Class: TypeFloat
30625template <> struct describe_node_t<SgTypeFloat> {
30626 using node = SgTypeFloat;
30627 using base = SgType;
30628 static constexpr char const * const name{"TypeFloat"};
30629 static constexpr unsigned long variant{767};
30630 static constexpr bool concrete{true};
30631 using subclasses_t = mp::List<>;
30632 using fields_t = mp::List<>;
30633};
30634template <> struct node_from_variant_t<767> { using type = SgTypeFloat; };
30635
30636// Class: TypeFloat128
30637template <> struct describe_node_t<SgTypeFloat128> {
30638 using node = SgTypeFloat128;
30639 using base = SgType;
30640 static constexpr char const * const name{"TypeFloat128"};
30641 static constexpr unsigned long variant{768};
30642 static constexpr bool concrete{true};
30643 using subclasses_t = mp::List<>;
30644 using fields_t = mp::List<>;
30645};
30646template <> struct node_from_variant_t<768> { using type = SgTypeFloat128; };
30647
30648// Class: TypeFloat80
30649template <> struct describe_node_t<SgTypeFloat80> {
30650 using node = SgTypeFloat80;
30651 using base = SgType;
30652 static constexpr char const * const name{"TypeFloat80"};
30653 static constexpr unsigned long variant{769};
30654 static constexpr bool concrete{true};
30655 using subclasses_t = mp::List<>;
30656 using fields_t = mp::List<>;
30657};
30658template <> struct node_from_variant_t<769> { using type = SgTypeFloat80; };
30659
30660// Class: TypeGlobalVoid
30662 using node = SgTypeGlobalVoid;
30663 using base = SgType;
30664 static constexpr char const * const name{"TypeGlobalVoid"};
30665 static constexpr unsigned long variant{770};
30666 static constexpr bool concrete{true};
30667 using subclasses_t = mp::List<>;
30668 using fields_t = mp::List<>;
30669};
30670template <> struct node_from_variant_t<770> { using type = SgTypeGlobalVoid; };
30671
30672// Class: TypeIdOp
30673template <> struct describe_field_t<SgTypeIdOp,SgExpression*,&SgTypeIdOp::p_operand_expr> {
30674 using parent = SgTypeIdOp;
30675 using field_type = SgExpression*;
30676 static constexpr size_t position{0};
30677 static constexpr char const * const name{"operand_expr"};
30678 static constexpr char const * const typestr{"SgExpression*"};
30679 static constexpr bool traverse{true};
30680 static constexpr auto mbr_ptr{&SgTypeIdOp::p_operand_expr};
30681 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30682 using bind = Desc<SgTypeIdOp, SgExpression* SgTypeIdOp::*, &SgTypeIdOp::p_operand_expr>;
30683};
30684template <> struct describe_field_t<SgTypeIdOp,SgType*,&SgTypeIdOp::p_operand_type> {
30685 using parent = SgTypeIdOp;
30686 using field_type = SgType*;
30687 static constexpr size_t position{1};
30688 static constexpr char const * const name{"operand_type"};
30689 static constexpr char const * const typestr{"SgType*"};
30690 static constexpr bool traverse{false};
30691 static constexpr auto mbr_ptr{&SgTypeIdOp::p_operand_type};
30692 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30693 using bind = Desc<SgTypeIdOp, SgType* SgTypeIdOp::*, &SgTypeIdOp::p_operand_type>;
30694};
30695template <> struct describe_field_t<SgTypeIdOp,int,&SgTypeIdOp::p_name_qualification_length> {
30696 using parent = SgTypeIdOp;
30697 using field_type = int;
30698 static constexpr size_t position{2};
30699 static constexpr char const * const name{"name_qualification_length"};
30700 static constexpr char const * const typestr{"int"};
30701 static constexpr bool traverse{false};
30702 static constexpr auto mbr_ptr{&SgTypeIdOp::p_name_qualification_length};
30703 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30704 using bind = Desc<SgTypeIdOp, int SgTypeIdOp::*, &SgTypeIdOp::p_name_qualification_length>;
30705};
30706template <> struct describe_field_t<SgTypeIdOp,bool,&SgTypeIdOp::p_type_elaboration_required> {
30707 using parent = SgTypeIdOp;
30708 using field_type = bool;
30709 static constexpr size_t position{3};
30710 static constexpr char const * const name{"type_elaboration_required"};
30711 static constexpr char const * const typestr{"bool"};
30712 static constexpr bool traverse{false};
30713 static constexpr auto mbr_ptr{&SgTypeIdOp::p_type_elaboration_required};
30714 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30715 using bind = Desc<SgTypeIdOp, bool SgTypeIdOp::*, &SgTypeIdOp::p_type_elaboration_required>;
30716};
30717template <> struct describe_field_t<SgTypeIdOp,bool,&SgTypeIdOp::p_global_qualification_required> {
30718 using parent = SgTypeIdOp;
30719 using field_type = bool;
30720 static constexpr size_t position{4};
30721 static constexpr char const * const name{"global_qualification_required"};
30722 static constexpr char const * const typestr{"bool"};
30723 static constexpr bool traverse{false};
30724 static constexpr auto mbr_ptr{&SgTypeIdOp::p_global_qualification_required};
30725 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30726 using bind = Desc<SgTypeIdOp, bool SgTypeIdOp::*, &SgTypeIdOp::p_global_qualification_required>;
30727};
30728template <> struct describe_field_t<SgTypeIdOp,int,&SgTypeIdOp::p_name_qualification_for_pointer_to_member_class_length> {
30729 using parent = SgTypeIdOp;
30730 using field_type = int;
30731 static constexpr size_t position{5};
30732 static constexpr char const * const name{"name_qualification_for_pointer_to_member_class_length"};
30733 static constexpr char const * const typestr{"int"};
30734 static constexpr bool traverse{false};
30735 static constexpr auto mbr_ptr{&SgTypeIdOp::p_name_qualification_for_pointer_to_member_class_length};
30736 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30737 using bind = Desc<SgTypeIdOp, int SgTypeIdOp::*, &SgTypeIdOp::p_name_qualification_for_pointer_to_member_class_length>;
30738};
30739template <> struct describe_field_t<SgTypeIdOp,bool,&SgTypeIdOp::p_type_elaboration_for_pointer_to_member_class_required> {
30740 using parent = SgTypeIdOp;
30741 using field_type = bool;
30742 static constexpr size_t position{6};
30743 static constexpr char const * const name{"type_elaboration_for_pointer_to_member_class_required"};
30744 static constexpr char const * const typestr{"bool"};
30745 static constexpr bool traverse{false};
30746 static constexpr auto mbr_ptr{&SgTypeIdOp::p_type_elaboration_for_pointer_to_member_class_required};
30747 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30748 using bind = Desc<SgTypeIdOp, bool SgTypeIdOp::*, &SgTypeIdOp::p_type_elaboration_for_pointer_to_member_class_required>;
30749};
30750template <> struct describe_field_t<SgTypeIdOp,bool,&SgTypeIdOp::p_global_qualification_for_pointer_to_member_class_required> {
30751 using parent = SgTypeIdOp;
30752 using field_type = bool;
30753 static constexpr size_t position{7};
30754 static constexpr char const * const name{"global_qualification_for_pointer_to_member_class_required"};
30755 static constexpr char const * const typestr{"bool"};
30756 static constexpr bool traverse{false};
30757 static constexpr auto mbr_ptr{&SgTypeIdOp::p_global_qualification_for_pointer_to_member_class_required};
30758 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30759 using bind = Desc<SgTypeIdOp, bool SgTypeIdOp::*, &SgTypeIdOp::p_global_qualification_for_pointer_to_member_class_required>;
30760};
30770template <> struct node_from_variant_t<771> { using type = SgTypeIdOp; };
30771
30772// Class: TypeImaginary
30773template <> struct describe_field_t<SgTypeImaginary,SgType*,&SgTypeImaginary::p_base_type> {
30774 using parent = SgTypeImaginary;
30775 using field_type = SgType*;
30776 static constexpr size_t position{0};
30777 static constexpr char const * const name{"base_type"};
30778 static constexpr char const * const typestr{"SgType*"};
30779 static constexpr bool traverse{false};
30780 static constexpr auto mbr_ptr{&SgTypeImaginary::p_base_type};
30781 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30782 using bind = Desc<SgTypeImaginary, SgType* SgTypeImaginary::*, &SgTypeImaginary::p_base_type>;
30783};
30785 using node = SgTypeImaginary;
30786 using base = SgType;
30787 static constexpr char const * const name{"TypeImaginary"};
30788 static constexpr unsigned long variant{772};
30789 static constexpr bool concrete{true};
30790 using subclasses_t = mp::List<>;
30792};
30793template <> struct node_from_variant_t<772> { using type = SgTypeImaginary; };
30794
30795// Class: TypeInt
30796template <> struct describe_field_t<SgTypeInt,int,&SgTypeInt::p_field_size> {
30797 using parent = SgTypeInt;
30798 using field_type = int;
30799 static constexpr size_t position{0};
30800 static constexpr char const * const name{"field_size"};
30801 static constexpr char const * const typestr{"int"};
30802 static constexpr bool traverse{false};
30803 static constexpr auto mbr_ptr{&SgTypeInt::p_field_size};
30804 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30805 using bind = Desc<SgTypeInt, int SgTypeInt::*, &SgTypeInt::p_field_size>;
30806};
30807template <> struct describe_node_t<SgTypeInt> {
30808 using node = SgTypeInt;
30809 using base = SgType;
30810 static constexpr char const * const name{"TypeInt"};
30811 static constexpr unsigned long variant{773};
30812 static constexpr bool concrete{true};
30813 using subclasses_t = mp::List<>;
30815};
30816template <> struct node_from_variant_t<773> { using type = SgTypeInt; };
30817
30818// Class: TypeLong
30819template <> struct describe_node_t<SgTypeLong> {
30820 using node = SgTypeLong;
30821 using base = SgType;
30822 static constexpr char const * const name{"TypeLong"};
30823 static constexpr unsigned long variant{774};
30824 static constexpr bool concrete{true};
30825 using subclasses_t = mp::List<>;
30826 using fields_t = mp::List<>;
30827};
30828template <> struct node_from_variant_t<774> { using type = SgTypeLong; };
30829
30830// Class: TypeLongDouble
30832 using node = SgTypeLongDouble;
30833 using base = SgType;
30834 static constexpr char const * const name{"TypeLongDouble"};
30835 static constexpr unsigned long variant{775};
30836 static constexpr bool concrete{true};
30837 using subclasses_t = mp::List<>;
30838 using fields_t = mp::List<>;
30839};
30840template <> struct node_from_variant_t<775> { using type = SgTypeLongDouble; };
30841
30842// Class: TypeLongLong
30843template <> struct describe_node_t<SgTypeLongLong> {
30844 using node = SgTypeLongLong;
30845 using base = SgType;
30846 static constexpr char const * const name{"TypeLongLong"};
30847 static constexpr unsigned long variant{776};
30848 static constexpr bool concrete{true};
30849 using subclasses_t = mp::List<>;
30850 using fields_t = mp::List<>;
30851};
30852template <> struct node_from_variant_t<776> { using type = SgTypeLongLong; };
30853
30854// Class: TypeModifier
30855template <> struct describe_field_t<SgTypeModifier,SgBitVector,&SgTypeModifier::p_modifierVector> {
30856 using parent = SgTypeModifier;
30857 using field_type = SgBitVector;
30858 static constexpr size_t position{0};
30859 static constexpr char const * const name{"modifierVector"};
30860 static constexpr char const * const typestr{"SgBitVector"};
30861 static constexpr bool traverse{false};
30862 static constexpr auto mbr_ptr{&SgTypeModifier::p_modifierVector};
30863 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30864 using bind = Desc<SgTypeModifier, SgBitVector SgTypeModifier::*, &SgTypeModifier::p_modifierVector>;
30865};
30866template <> struct describe_field_t<SgTypeModifier,SgUPC_AccessModifier,&SgTypeModifier::p_upcModifier> {
30867 using parent = SgTypeModifier;
30869 static constexpr size_t position{1};
30870 static constexpr char const * const name{"upcModifier"};
30871 static constexpr char const * const typestr{"SgUPC_AccessModifier"};
30872 static constexpr bool traverse{false};
30873 static constexpr auto mbr_ptr{&SgTypeModifier::p_upcModifier};
30874 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30875 using bind = Desc<SgTypeModifier, SgUPC_AccessModifier SgTypeModifier::*, &SgTypeModifier::p_upcModifier>;
30876};
30877template <> struct describe_field_t<SgTypeModifier,SgStructureModifier,&SgTypeModifier::p_structureModifier> {
30878 using parent = SgTypeModifier;
30880 static constexpr size_t position{2};
30881 static constexpr char const * const name{"structureModifier"};
30882 static constexpr char const * const typestr{"SgStructureModifier"};
30883 static constexpr bool traverse{false};
30884 static constexpr auto mbr_ptr{&SgTypeModifier::p_structureModifier};
30885 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30886 using bind = Desc<SgTypeModifier, SgStructureModifier SgTypeModifier::*, &SgTypeModifier::p_structureModifier>;
30887};
30888template <> struct describe_field_t<SgTypeModifier,SgConstVolatileModifier,&SgTypeModifier::p_constVolatileModifier> {
30889 using parent = SgTypeModifier;
30891 static constexpr size_t position{3};
30892 static constexpr char const * const name{"constVolatileModifier"};
30893 static constexpr char const * const typestr{"SgConstVolatileModifier"};
30894 static constexpr bool traverse{false};
30895 static constexpr auto mbr_ptr{&SgTypeModifier::p_constVolatileModifier};
30896 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30897 using bind = Desc<SgTypeModifier, SgConstVolatileModifier SgTypeModifier::*, &SgTypeModifier::p_constVolatileModifier>;
30898};
30899template <> struct describe_field_t<SgTypeModifier,SgElaboratedTypeModifier,&SgTypeModifier::p_elaboratedTypeModifier> {
30900 using parent = SgTypeModifier;
30902 static constexpr size_t position{4};
30903 static constexpr char const * const name{"elaboratedTypeModifier"};
30904 static constexpr char const * const typestr{"SgElaboratedTypeModifier"};
30905 static constexpr bool traverse{false};
30906 static constexpr auto mbr_ptr{&SgTypeModifier::p_elaboratedTypeModifier};
30907 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30908 using bind = Desc<SgTypeModifier, SgElaboratedTypeModifier SgTypeModifier::*, &SgTypeModifier::p_elaboratedTypeModifier>;
30909};
30910template <> struct describe_field_t<SgTypeModifier,SgTypeModifier::gnu_extension_machine_mode_enum,&SgTypeModifier::p_gnu_extension_machine_mode> {
30911 using parent = SgTypeModifier;
30913 static constexpr size_t position{5};
30914 static constexpr char const * const name{"gnu_extension_machine_mode"};
30915 static constexpr char const * const typestr{"SgTypeModifier::gnu_extension_machine_mode_enum"};
30916 static constexpr bool traverse{false};
30917 static constexpr auto mbr_ptr{&SgTypeModifier::p_gnu_extension_machine_mode};
30918 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30919 using bind = Desc<SgTypeModifier, SgTypeModifier::gnu_extension_machine_mode_enum SgTypeModifier::*, &SgTypeModifier::p_gnu_extension_machine_mode>;
30920};
30921template <> struct describe_field_t<SgTypeModifier,int,&SgTypeModifier::p_gnu_attribute_alignment> {
30922 using parent = SgTypeModifier;
30923 using field_type = int;
30924 static constexpr size_t position{6};
30925 static constexpr char const * const name{"gnu_attribute_alignment"};
30926 static constexpr char const * const typestr{"int"};
30927 static constexpr bool traverse{false};
30928 static constexpr auto mbr_ptr{&SgTypeModifier::p_gnu_attribute_alignment};
30929 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30930 using bind = Desc<SgTypeModifier, int SgTypeModifier::*, &SgTypeModifier::p_gnu_attribute_alignment>;
30931};
30932template <> struct describe_field_t<SgTypeModifier,long,&SgTypeModifier::p_gnu_attribute_sentinel> {
30933 using parent = SgTypeModifier;
30934 using field_type = long;
30935 static constexpr size_t position{7};
30936 static constexpr char const * const name{"gnu_attribute_sentinel"};
30937 static constexpr char const * const typestr{"long"};
30938 static constexpr bool traverse{false};
30939 static constexpr auto mbr_ptr{&SgTypeModifier::p_gnu_attribute_sentinel};
30940 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30941 using bind = Desc<SgTypeModifier, long SgTypeModifier::*, &SgTypeModifier::p_gnu_attribute_sentinel>;
30942};
30943template <> struct describe_field_t<SgTypeModifier,unsigned,&SgTypeModifier::p_address_space_value> {
30944 using parent = SgTypeModifier;
30945 using field_type = unsigned;
30946 static constexpr size_t position{8};
30947 static constexpr char const * const name{"address_space_value"};
30948 static constexpr char const * const typestr{"unsigned"};
30949 static constexpr bool traverse{false};
30950 static constexpr auto mbr_ptr{&SgTypeModifier::p_address_space_value};
30951 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30952 using bind = Desc<SgTypeModifier, unsigned SgTypeModifier::*, &SgTypeModifier::p_address_space_value>;
30953};
30954template <> struct describe_field_t<SgTypeModifier,unsigned,&SgTypeModifier::p_vector_size> {
30955 using parent = SgTypeModifier;
30956 using field_type = unsigned;
30957 static constexpr size_t position{9};
30958 static constexpr char const * const name{"vector_size"};
30959 static constexpr char const * const typestr{"unsigned"};
30960 static constexpr bool traverse{false};
30961 static constexpr auto mbr_ptr{&SgTypeModifier::p_vector_size};
30962 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30963 using bind = Desc<SgTypeModifier, unsigned SgTypeModifier::*, &SgTypeModifier::p_vector_size>;
30964};
30974template <> struct node_from_variant_t<777> { using type = SgTypeModifier; };
30975
30976// Class: TypeMatrix
30977template <> struct describe_field_t<SgTypeMatrix,SgType*,&SgTypeMatrix::p_base_type> {
30978 using parent = SgTypeMatrix;
30979 using field_type = SgType*;
30980 static constexpr size_t position{0};
30981 static constexpr char const * const name{"base_type"};
30982 static constexpr char const * const typestr{"SgType*"};
30983 static constexpr bool traverse{false};
30984 static constexpr auto mbr_ptr{&SgTypeMatrix::p_base_type};
30985 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
30986 using bind = Desc<SgTypeMatrix, SgType* SgTypeMatrix::*, &SgTypeMatrix::p_base_type>;
30987};
30988template <> struct describe_node_t<SgTypeMatrix> {
30989 using node = SgTypeMatrix;
30990 using base = SgType;
30991 static constexpr char const * const name{"TypeMatrix"};
30992 static constexpr unsigned long variant{778};
30993 static constexpr bool concrete{true};
30994 using subclasses_t = mp::List<>;
30996};
30997template <> struct node_from_variant_t<778> { using type = SgTypeMatrix; };
30998
30999// Class: TypeTuple
31000template <> struct describe_field_t<SgTypeTuple,SgTypePtrList,&SgTypeTuple::p_types> {
31001 using parent = SgTypeTuple;
31002 using field_type = SgTypePtrList;
31003 static constexpr size_t position{0};
31004 static constexpr char const * const name{"types"};
31005 static constexpr char const * const typestr{"SgTypePtrList"};
31006 static constexpr bool traverse{false};
31007 static constexpr auto mbr_ptr{&SgTypeTuple::p_types};
31008 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31009 using bind = Desc<SgTypeTuple, SgTypePtrList SgTypeTuple::*, &SgTypeTuple::p_types>;
31010};
31011template <> struct describe_node_t<SgTypeTuple> {
31012 using node = SgTypeTuple;
31013 using base = SgType;
31014 static constexpr char const * const name{"TypeTuple"};
31015 static constexpr unsigned long variant{779};
31016 static constexpr bool concrete{true};
31017 using subclasses_t = mp::List<>;
31019};
31020template <> struct node_from_variant_t<779> { using type = SgTypeTuple; };
31021
31022// Class: TypeNullptr
31023template <> struct describe_node_t<SgTypeNullptr> {
31024 using node = SgTypeNullptr;
31025 using base = SgType;
31026 static constexpr char const * const name{"TypeNullptr"};
31027 static constexpr unsigned long variant{780};
31028 static constexpr bool concrete{true};
31029 using subclasses_t = mp::List<>;
31030 using fields_t = mp::List<>;
31031};
31032template <> struct node_from_variant_t<780> { using type = SgTypeNullptr; };
31033
31034// Class: TypeOfType
31035template <> struct describe_field_t<SgTypeOfType,SgExpression*,&SgTypeOfType::p_base_expression> {
31036 using parent = SgTypeOfType;
31037 using field_type = SgExpression*;
31038 static constexpr size_t position{0};
31039 static constexpr char const * const name{"base_expression"};
31040 static constexpr char const * const typestr{"SgExpression*"};
31041 static constexpr bool traverse{false};
31042 static constexpr auto mbr_ptr{&SgTypeOfType::p_base_expression};
31043 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31044 using bind = Desc<SgTypeOfType, SgExpression* SgTypeOfType::*, &SgTypeOfType::p_base_expression>;
31045};
31046template <> struct describe_field_t<SgTypeOfType,SgType*,&SgTypeOfType::p_base_type> {
31047 using parent = SgTypeOfType;
31048 using field_type = SgType*;
31049 static constexpr size_t position{1};
31050 static constexpr char const * const name{"base_type"};
31051 static constexpr char const * const typestr{"SgType*"};
31052 static constexpr bool traverse{false};
31053 static constexpr auto mbr_ptr{&SgTypeOfType::p_base_type};
31054 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31055 using bind = Desc<SgTypeOfType, SgType* SgTypeOfType::*, &SgTypeOfType::p_base_type>;
31056};
31057template <> struct describe_node_t<SgTypeOfType> {
31058 using node = SgTypeOfType;
31059 using base = SgType;
31060 static constexpr char const * const name{"TypeOfType"};
31061 static constexpr unsigned long variant{781};
31062 static constexpr bool concrete{true};
31063 using subclasses_t = mp::List<>;
31065};
31066template <> struct node_from_variant_t<781> { using type = SgTypeOfType; };
31067
31068// Class: TypeShort
31069template <> struct describe_node_t<SgTypeShort> {
31070 using node = SgTypeShort;
31071 using base = SgType;
31072 static constexpr char const * const name{"TypeShort"};
31073 static constexpr unsigned long variant{782};
31074 static constexpr bool concrete{true};
31075 using subclasses_t = mp::List<>;
31076 using fields_t = mp::List<>;
31077};
31078template <> struct node_from_variant_t<782> { using type = SgTypeShort; };
31079
31080// Class: TypeSigned128bitInteger
31083 using base = SgType;
31084 static constexpr char const * const name{"TypeSigned128bitInteger"};
31085 static constexpr unsigned long variant{783};
31086 static constexpr bool concrete{true};
31087 using subclasses_t = mp::List<>;
31088 using fields_t = mp::List<>;
31089};
31090template <> struct node_from_variant_t<783> { using type = SgTypeSigned128bitInteger; };
31091
31092// Class: TypeSignedChar
31094 using node = SgTypeSignedChar;
31095 using base = SgType;
31096 static constexpr char const * const name{"TypeSignedChar"};
31097 static constexpr unsigned long variant{784};
31098 static constexpr bool concrete{true};
31099 using subclasses_t = mp::List<>;
31100 using fields_t = mp::List<>;
31101};
31102template <> struct node_from_variant_t<784> { using type = SgTypeSignedChar; };
31103
31104// Class: TypeSignedInt
31106 using node = SgTypeSignedInt;
31107 using base = SgType;
31108 static constexpr char const * const name{"TypeSignedInt"};
31109 static constexpr unsigned long variant{785};
31110 static constexpr bool concrete{true};
31111 using subclasses_t = mp::List<>;
31112 using fields_t = mp::List<>;
31113};
31114template <> struct node_from_variant_t<785> { using type = SgTypeSignedInt; };
31115
31116// Class: TypeSignedLong
31118 using node = SgTypeSignedLong;
31119 using base = SgType;
31120 static constexpr char const * const name{"TypeSignedLong"};
31121 static constexpr unsigned long variant{786};
31122 static constexpr bool concrete{true};
31123 using subclasses_t = mp::List<>;
31124 using fields_t = mp::List<>;
31125};
31126template <> struct node_from_variant_t<786> { using type = SgTypeSignedLong; };
31127
31128// Class: TypeSignedLongLong
31130 using node = SgTypeSignedLongLong;
31131 using base = SgType;
31132 static constexpr char const * const name{"TypeSignedLongLong"};
31133 static constexpr unsigned long variant{787};
31134 static constexpr bool concrete{true};
31135 using subclasses_t = mp::List<>;
31136 using fields_t = mp::List<>;
31137};
31138template <> struct node_from_variant_t<787> { using type = SgTypeSignedLongLong; };
31139
31140// Class: TypeSignedShort
31142 using node = SgTypeSignedShort;
31143 using base = SgType;
31144 static constexpr char const * const name{"TypeSignedShort"};
31145 static constexpr unsigned long variant{788};
31146 static constexpr bool concrete{true};
31147 using subclasses_t = mp::List<>;
31148 using fields_t = mp::List<>;
31149};
31150template <> struct node_from_variant_t<788> { using type = SgTypeSignedShort; };
31151
31152// Class: TypeString
31153template <> struct describe_field_t<SgTypeString,SgExpression*,&SgTypeString::p_lengthExpression> {
31154 using parent = SgTypeString;
31155 using field_type = SgExpression*;
31156 static constexpr size_t position{0};
31157 static constexpr char const * const name{"lengthExpression"};
31158 static constexpr char const * const typestr{"SgExpression*"};
31159 static constexpr bool traverse{true};
31160 static constexpr auto mbr_ptr{&SgTypeString::p_lengthExpression};
31161 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31162 using bind = Desc<SgTypeString, SgExpression* SgTypeString::*, &SgTypeString::p_lengthExpression>;
31163};
31164template <> struct describe_node_t<SgTypeString> {
31165 using node = SgTypeString;
31166 using base = SgType;
31167 static constexpr char const * const name{"TypeString"};
31168 static constexpr unsigned long variant{789};
31169 static constexpr bool concrete{true};
31170 using subclasses_t = mp::List<>;
31172};
31173template <> struct node_from_variant_t<789> { using type = SgTypeString; };
31174
31175// Class: TypeUnknown
31176template <> struct describe_field_t<SgTypeUnknown,std::string,&SgTypeUnknown::p_type_name> {
31177 using parent = SgTypeUnknown;
31178 using field_type = std::string;
31179 static constexpr size_t position{0};
31180 static constexpr char const * const name{"type_name"};
31181 static constexpr char const * const typestr{"std::string"};
31182 static constexpr bool traverse{false};
31183 static constexpr auto mbr_ptr{&SgTypeUnknown::p_type_name};
31184 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31185 using bind = Desc<SgTypeUnknown, std::string SgTypeUnknown::*, &SgTypeUnknown::p_type_name>;
31186};
31187template <> struct describe_field_t<SgTypeUnknown,bool,&SgTypeUnknown::p_has_type_name> {
31188 using parent = SgTypeUnknown;
31189 using field_type = bool;
31190 static constexpr size_t position{1};
31191 static constexpr char const * const name{"has_type_name"};
31192 static constexpr char const * const typestr{"bool"};
31193 static constexpr bool traverse{false};
31194 static constexpr auto mbr_ptr{&SgTypeUnknown::p_has_type_name};
31195 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31196 using bind = Desc<SgTypeUnknown, bool SgTypeUnknown::*, &SgTypeUnknown::p_has_type_name>;
31197};
31198template <> struct describe_node_t<SgTypeUnknown> {
31199 using node = SgTypeUnknown;
31200 using base = SgType;
31201 static constexpr char const * const name{"TypeUnknown"};
31202 static constexpr unsigned long variant{790};
31203 static constexpr bool concrete{true};
31204 using subclasses_t = mp::List<>;
31206};
31207template <> struct node_from_variant_t<790> { using type = SgTypeUnknown; };
31208
31209// Class: TypeUnsigned128bitInteger
31212 using base = SgType;
31213 static constexpr char const * const name{"TypeUnsigned128bitInteger"};
31214 static constexpr unsigned long variant{791};
31215 static constexpr bool concrete{true};
31216 using subclasses_t = mp::List<>;
31217 using fields_t = mp::List<>;
31218};
31219template <> struct node_from_variant_t<791> { using type = SgTypeUnsigned128bitInteger; };
31220
31221// Class: TypeUnsignedChar
31223 using node = SgTypeUnsignedChar;
31224 using base = SgType;
31225 static constexpr char const * const name{"TypeUnsignedChar"};
31226 static constexpr unsigned long variant{792};
31227 static constexpr bool concrete{true};
31228 using subclasses_t = mp::List<>;
31229 using fields_t = mp::List<>;
31230};
31231template <> struct node_from_variant_t<792> { using type = SgTypeUnsignedChar; };
31232
31233// Class: TypeUnsignedInt
31235 using node = SgTypeUnsignedInt;
31236 using base = SgType;
31237 static constexpr char const * const name{"TypeUnsignedInt"};
31238 static constexpr unsigned long variant{793};
31239 static constexpr bool concrete{true};
31240 using subclasses_t = mp::List<>;
31241 using fields_t = mp::List<>;
31242};
31243template <> struct node_from_variant_t<793> { using type = SgTypeUnsignedInt; };
31244
31245// Class: TypeUnsignedLong
31247 using node = SgTypeUnsignedLong;
31248 using base = SgType;
31249 static constexpr char const * const name{"TypeUnsignedLong"};
31250 static constexpr unsigned long variant{794};
31251 static constexpr bool concrete{true};
31252 using subclasses_t = mp::List<>;
31253 using fields_t = mp::List<>;
31254};
31255template <> struct node_from_variant_t<794> { using type = SgTypeUnsignedLong; };
31256
31257// Class: TypeUnsignedLongLong
31260 using base = SgType;
31261 static constexpr char const * const name{"TypeUnsignedLongLong"};
31262 static constexpr unsigned long variant{795};
31263 static constexpr bool concrete{true};
31264 using subclasses_t = mp::List<>;
31265 using fields_t = mp::List<>;
31266};
31267template <> struct node_from_variant_t<795> { using type = SgTypeUnsignedLongLong; };
31268
31269// Class: TypeUnsignedShort
31271 using node = SgTypeUnsignedShort;
31272 using base = SgType;
31273 static constexpr char const * const name{"TypeUnsignedShort"};
31274 static constexpr unsigned long variant{796};
31275 static constexpr bool concrete{true};
31276 using subclasses_t = mp::List<>;
31277 using fields_t = mp::List<>;
31278};
31279template <> struct node_from_variant_t<796> { using type = SgTypeUnsignedShort; };
31280
31281// Class: TypeVoid
31282template <> struct describe_node_t<SgTypeVoid> {
31283 using node = SgTypeVoid;
31284 using base = SgType;
31285 static constexpr char const * const name{"TypeVoid"};
31286 static constexpr unsigned long variant{797};
31287 static constexpr bool concrete{true};
31288 using subclasses_t = mp::List<>;
31289 using fields_t = mp::List<>;
31290};
31291template <> struct node_from_variant_t<797> { using type = SgTypeVoid; };
31292
31293// Class: TypeWchar
31294template <> struct describe_node_t<SgTypeWchar> {
31295 using node = SgTypeWchar;
31296 using base = SgType;
31297 static constexpr char const * const name{"TypeWchar"};
31298 static constexpr unsigned long variant{798};
31299 static constexpr bool concrete{true};
31300 using subclasses_t = mp::List<>;
31301 using fields_t = mp::List<>;
31302};
31303template <> struct node_from_variant_t<798> { using type = SgTypeWchar; };
31304
31305// Class: TypedefDeclaration
31308 using field_type = SgName;
31309 static constexpr size_t position{0};
31310 static constexpr char const * const name{"name"};
31311 static constexpr char const * const typestr{"SgName"};
31312 static constexpr bool traverse{false};
31313 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_name};
31314 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31315 using bind = Desc<SgTypedefDeclaration, SgName SgTypedefDeclaration::*, &SgTypedefDeclaration::p_name>;
31316};
31319 using field_type = SgType*;
31320 static constexpr size_t position{1};
31321 static constexpr char const * const name{"base_type"};
31322 static constexpr char const * const typestr{"SgType*"};
31323 static constexpr bool traverse{false};
31324 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_base_type};
31325 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31326 using bind = Desc<SgTypedefDeclaration, SgType* SgTypedefDeclaration::*, &SgTypedefDeclaration::p_base_type>;
31327};
31330 using field_type = SgTypedefType*;
31331 static constexpr size_t position{2};
31332 static constexpr char const * const name{"type"};
31333 static constexpr char const * const typestr{"SgTypedefType*"};
31334 static constexpr bool traverse{false};
31335 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_type};
31336 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31337 using bind = Desc<SgTypedefDeclaration, SgTypedefType* SgTypedefDeclaration::*, &SgTypedefDeclaration::p_type>;
31338};
31342 static constexpr size_t position{3};
31343 static constexpr char const * const name{"declaration"};
31344 static constexpr char const * const typestr{"SgDeclarationStatement*"};
31345 static constexpr bool traverse{true};
31346 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_declaration};
31347 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31348 using bind = Desc<SgTypedefDeclaration, SgDeclarationStatement* SgTypedefDeclaration::*, &SgTypedefDeclaration::p_declaration>;
31349};
31352 using field_type = SgSymbol*;
31353 static constexpr size_t position{4};
31354 static constexpr char const * const name{"parent_scope"};
31355 static constexpr char const * const typestr{"SgSymbol*"};
31356 static constexpr bool traverse{false};
31357 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_parent_scope};
31358 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31359 using bind = Desc<SgTypedefDeclaration, SgSymbol* SgTypedefDeclaration::*, &SgTypedefDeclaration::p_parent_scope>;
31360};
31363 using field_type = bool;
31364 static constexpr size_t position{5};
31365 static constexpr char const * const name{"typedefBaseTypeContainsDefiningDeclaration"};
31366 static constexpr char const * const typestr{"bool"};
31367 static constexpr bool traverse{false};
31369 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31370 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_typedefBaseTypeContainsDefiningDeclaration>;
31371};
31375 static constexpr size_t position{6};
31376 static constexpr char const * const name{"scope"};
31377 static constexpr char const * const typestr{"SgScopeStatement*"};
31378 static constexpr bool traverse{false};
31379 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_scope};
31380 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31381 using bind = Desc<SgTypedefDeclaration, SgScopeStatement* SgTypedefDeclaration::*, &SgTypedefDeclaration::p_scope>;
31382};
31383template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_requiresGlobalNameQualificationOnType> {
31385 using field_type = bool;
31386 static constexpr size_t position{7};
31387 static constexpr char const * const name{"requiresGlobalNameQualificationOnType"};
31388 static constexpr char const * const typestr{"bool"};
31389 static constexpr bool traverse{false};
31390 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_requiresGlobalNameQualificationOnType};
31391 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31392 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_requiresGlobalNameQualificationOnType>;
31393};
31394template <> struct describe_field_t<SgTypedefDeclaration,int,&SgTypedefDeclaration::p_name_qualification_length_for_base_type> {
31396 using field_type = int;
31397 static constexpr size_t position{8};
31398 static constexpr char const * const name{"name_qualification_length_for_base_type"};
31399 static constexpr char const * const typestr{"int"};
31400 static constexpr bool traverse{false};
31401 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_name_qualification_length_for_base_type};
31402 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31403 using bind = Desc<SgTypedefDeclaration, int SgTypedefDeclaration::*, &SgTypedefDeclaration::p_name_qualification_length_for_base_type>;
31404};
31405template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_type_elaboration_required_for_base_type> {
31407 using field_type = bool;
31408 static constexpr size_t position{9};
31409 static constexpr char const * const name{"type_elaboration_required_for_base_type"};
31410 static constexpr char const * const typestr{"bool"};
31411 static constexpr bool traverse{false};
31412 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_type_elaboration_required_for_base_type};
31413 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31414 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_type_elaboration_required_for_base_type>;
31415};
31416template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_global_qualification_required_for_base_type> {
31418 using field_type = bool;
31419 static constexpr size_t position{10};
31420 static constexpr char const * const name{"global_qualification_required_for_base_type"};
31421 static constexpr char const * const typestr{"bool"};
31422 static constexpr bool traverse{false};
31423 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_global_qualification_required_for_base_type};
31424 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31425 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_global_qualification_required_for_base_type>;
31426};
31427template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_isAutonomousDeclaration> {
31429 using field_type = bool;
31430 static constexpr size_t position{11};
31431 static constexpr char const * const name{"isAutonomousDeclaration"};
31432 static constexpr char const * const typestr{"bool"};
31433 static constexpr bool traverse{false};
31434 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_isAutonomousDeclaration};
31435 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31436 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_isAutonomousDeclaration>;
31437};
31438template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_isAssociatedWithDeclarationList> {
31440 using field_type = bool;
31441 static constexpr size_t position{12};
31442 static constexpr char const * const name{"isAssociatedWithDeclarationList"};
31443 static constexpr char const * const typestr{"bool"};
31444 static constexpr bool traverse{false};
31445 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_isAssociatedWithDeclarationList};
31446 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31447 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_isAssociatedWithDeclarationList>;
31448};
31449template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_isFirstDeclarationOfDeclarationList> {
31451 using field_type = bool;
31452 static constexpr size_t position{13};
31453 static constexpr char const * const name{"isFirstDeclarationOfDeclarationList"};
31454 static constexpr char const * const typestr{"bool"};
31455 static constexpr bool traverse{false};
31456 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_isFirstDeclarationOfDeclarationList};
31457 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31458 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_isFirstDeclarationOfDeclarationList>;
31459};
31460template <> struct describe_field_t<SgTypedefDeclaration,int,&SgTypedefDeclaration::p_name_qualification_length> {
31462 using field_type = int;
31463 static constexpr size_t position{14};
31464 static constexpr char const * const name{"name_qualification_length"};
31465 static constexpr char const * const typestr{"int"};
31466 static constexpr bool traverse{false};
31467 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_name_qualification_length};
31468 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31469 using bind = Desc<SgTypedefDeclaration, int SgTypedefDeclaration::*, &SgTypedefDeclaration::p_name_qualification_length>;
31470};
31471template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_type_elaboration_required> {
31473 using field_type = bool;
31474 static constexpr size_t position{15};
31475 static constexpr char const * const name{"type_elaboration_required"};
31476 static constexpr char const * const typestr{"bool"};
31477 static constexpr bool traverse{false};
31478 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_type_elaboration_required};
31479 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31480 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_type_elaboration_required>;
31481};
31482template <> struct describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_global_qualification_required> {
31484 using field_type = bool;
31485 static constexpr size_t position{16};
31486 static constexpr char const * const name{"global_qualification_required"};
31487 static constexpr char const * const typestr{"bool"};
31488 static constexpr bool traverse{false};
31489 static constexpr auto mbr_ptr{&SgTypedefDeclaration::p_global_qualification_required};
31490 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31491 using bind = Desc<SgTypedefDeclaration, bool SgTypedefDeclaration::*, &SgTypedefDeclaration::p_global_qualification_required>;
31492};
31494 using node = SgTypedefDeclaration;
31496 static constexpr char const * const name{"TypedefDeclaration"};
31497 static constexpr unsigned long variant{799};
31498 static constexpr bool concrete{true};
31500 using fields_t = mp::List<describe_field_t<SgTypedefDeclaration,SgName,&SgTypedefDeclaration::p_name>, describe_field_t<SgTypedefDeclaration,SgType*,&SgTypedefDeclaration::p_base_type>, describe_field_t<SgTypedefDeclaration,SgTypedefType*,&SgTypedefDeclaration::p_type>, describe_field_t<SgTypedefDeclaration,SgDeclarationStatement*,&SgTypedefDeclaration::p_declaration>, describe_field_t<SgTypedefDeclaration,SgSymbol*,&SgTypedefDeclaration::p_parent_scope>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_typedefBaseTypeContainsDefiningDeclaration>, describe_field_t<SgTypedefDeclaration,SgScopeStatement*,&SgTypedefDeclaration::p_scope>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_requiresGlobalNameQualificationOnType>, describe_field_t<SgTypedefDeclaration,int,&SgTypedefDeclaration::p_name_qualification_length_for_base_type>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_type_elaboration_required_for_base_type>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_global_qualification_required_for_base_type>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_isAutonomousDeclaration>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_isAssociatedWithDeclarationList>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_isFirstDeclarationOfDeclarationList>, describe_field_t<SgTypedefDeclaration,int,&SgTypedefDeclaration::p_name_qualification_length>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_type_elaboration_required>, describe_field_t<SgTypedefDeclaration,bool,&SgTypedefDeclaration::p_global_qualification_required>>;
31501};
31502template <> struct node_from_variant_t<799> { using type = SgTypedefDeclaration; };
31503
31504// Class: TypedefSeq
31505template <> struct describe_field_t<SgTypedefSeq,SgTypePtrList,&SgTypedefSeq::p_typedefs> {
31506 using parent = SgTypedefSeq;
31507 using field_type = SgTypePtrList;
31508 static constexpr size_t position{0};
31509 static constexpr char const * const name{"typedefs"};
31510 static constexpr char const * const typestr{"SgTypePtrList"};
31511 static constexpr bool traverse{false};
31512 static constexpr auto mbr_ptr{&SgTypedefSeq::p_typedefs};
31513 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31514 using bind = Desc<SgTypedefSeq, SgTypePtrList SgTypedefSeq::*, &SgTypedefSeq::p_typedefs>;
31515};
31516template <> struct describe_node_t<SgTypedefSeq> {
31517 using node = SgTypedefSeq;
31518 using base = SgSupport;
31519 static constexpr char const * const name{"TypedefSeq"};
31520 static constexpr unsigned long variant{800};
31521 static constexpr bool concrete{true};
31522 using subclasses_t = mp::List<>;
31524};
31525template <> struct node_from_variant_t<800> { using type = SgTypedefSeq; };
31526
31527// Class: TypedefSymbol
31528template <> struct describe_field_t<SgTypedefSymbol,SgTypedefDeclaration*,&SgTypedefSymbol::p_declaration> {
31529 using parent = SgTypedefSymbol;
31531 static constexpr size_t position{0};
31532 static constexpr char const * const name{"declaration"};
31533 static constexpr char const * const typestr{"SgTypedefDeclaration*"};
31534 static constexpr bool traverse{true};
31535 static constexpr auto mbr_ptr{&SgTypedefSymbol::p_declaration};
31536 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31537 using bind = Desc<SgTypedefSymbol, SgTypedefDeclaration* SgTypedefSymbol::*, &SgTypedefSymbol::p_declaration>;
31538};
31540 using node = SgTypedefSymbol;
31541 using base = SgSymbol;
31542 static constexpr char const * const name{"TypedefSymbol"};
31543 static constexpr unsigned long variant{801};
31544 static constexpr bool concrete{true};
31547};
31548template <> struct node_from_variant_t<801> { using type = SgTypedefSymbol; };
31549
31550// Class: TypedefType
31551template <> struct describe_field_t<SgTypedefType,SgSymbol*,&SgTypedefType::p_parent_scope> {
31552 using parent = SgTypedefType;
31553 using field_type = SgSymbol*;
31554 static constexpr size_t position{0};
31555 static constexpr char const * const name{"parent_scope"};
31556 static constexpr char const * const typestr{"SgSymbol*"};
31557 static constexpr bool traverse{false};
31558 static constexpr auto mbr_ptr{&SgTypedefType::p_parent_scope};
31559 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31560 using bind = Desc<SgTypedefType, SgSymbol* SgTypedefType::*, &SgTypedefType::p_parent_scope>;
31561};
31562template <> struct describe_node_t<SgTypedefType> {
31563 using node = SgTypedefType;
31564 using base = SgNamedType;
31565 static constexpr char const * const name{"TypedefType"};
31566 static constexpr unsigned long variant{802};
31567 static constexpr bool concrete{true};
31568 using subclasses_t = mp::List<>;
31570};
31571template <> struct node_from_variant_t<802> { using type = SgTypedefType; };
31572
31573// Class: UPC_AccessModifier
31574template <> struct describe_field_t<SgUPC_AccessModifier,SgUPC_AccessModifier::upc_access_modifier_enum,&SgUPC_AccessModifier::p_modifier> {
31577 static constexpr size_t position{0};
31578 static constexpr char const * const name{"modifier"};
31579 static constexpr char const * const typestr{"SgUPC_AccessModifier::upc_access_modifier_enum"};
31580 static constexpr bool traverse{false};
31581 static constexpr auto mbr_ptr{&SgUPC_AccessModifier::p_modifier};
31582 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31583 using bind = Desc<SgUPC_AccessModifier, SgUPC_AccessModifier::upc_access_modifier_enum SgUPC_AccessModifier::*, &SgUPC_AccessModifier::p_modifier>;
31584};
31585template <> struct describe_field_t<SgUPC_AccessModifier,bool,&SgUPC_AccessModifier::p_isShared> {
31587 using field_type = bool;
31588 static constexpr size_t position{1};
31589 static constexpr char const * const name{"isShared"};
31590 static constexpr char const * const typestr{"bool"};
31591 static constexpr bool traverse{false};
31592 static constexpr auto mbr_ptr{&SgUPC_AccessModifier::p_isShared};
31593 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31594 using bind = Desc<SgUPC_AccessModifier, bool SgUPC_AccessModifier::*, &SgUPC_AccessModifier::p_isShared>;
31595};
31596template <> struct describe_field_t<SgUPC_AccessModifier,long,&SgUPC_AccessModifier::p_layout> {
31598 using field_type = long;
31599 static constexpr size_t position{2};
31600 static constexpr char const * const name{"layout"};
31601 static constexpr char const * const typestr{"long"};
31602 static constexpr bool traverse{false};
31603 static constexpr auto mbr_ptr{&SgUPC_AccessModifier::p_layout};
31604 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31605 using bind = Desc<SgUPC_AccessModifier, long SgUPC_AccessModifier::*, &SgUPC_AccessModifier::p_layout>;
31606};
31608 using node = SgUPC_AccessModifier;
31609 using base = SgModifier;
31610 static constexpr char const * const name{"UPC_AccessModifier"};
31611 static constexpr unsigned long variant{803};
31612 static constexpr bool concrete{true};
31613 using subclasses_t = mp::List<>;
31615};
31616template <> struct node_from_variant_t<803> { using type = SgUPC_AccessModifier; };
31617
31618// Class: UnaryAddOp
31619template <> struct describe_node_t<SgUnaryAddOp> {
31620 using node = SgUnaryAddOp;
31621 using base = SgUnaryOp;
31622 static constexpr char const * const name{"UnaryAddOp"};
31623 static constexpr unsigned long variant{804};
31624 static constexpr bool concrete{true};
31625 using subclasses_t = mp::List<>;
31626 using fields_t = mp::List<>;
31627};
31628template <> struct node_from_variant_t<804> { using type = SgUnaryAddOp; };
31629
31630// Class: UnaryOp
31632 using parent = SgUnaryOp;
31633 using field_type = SgExpression*;
31634 static constexpr size_t position{0};
31635 static constexpr char const * const name{"operand_i"};
31636 static constexpr char const * const typestr{"SgExpression*"};
31637 static constexpr bool traverse{true};
31638 static constexpr auto mbr_ptr{&SgUnaryOp::p_operand_i};
31639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31640 using bind = Desc<SgUnaryOp, SgExpression* SgUnaryOp::*, &SgUnaryOp::p_operand_i>;
31641};
31643 using parent = SgUnaryOp;
31644 using field_type = SgType*;
31645 static constexpr size_t position{1};
31646 static constexpr char const * const name{"expression_type"};
31647 static constexpr char const * const typestr{"SgType*"};
31648 static constexpr bool traverse{false};
31649 static constexpr auto mbr_ptr{&SgUnaryOp::p_expression_type};
31650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31651 using bind = Desc<SgUnaryOp, SgType* SgUnaryOp::*, &SgUnaryOp::p_expression_type>;
31652};
31654 using parent = SgUnaryOp;
31656 static constexpr size_t position{2};
31657 static constexpr char const * const name{"mode"};
31658 static constexpr char const * const typestr{"SgUnaryOp::Sgop_mode"};
31659 static constexpr bool traverse{false};
31660 static constexpr auto mbr_ptr{&SgUnaryOp::p_mode};
31661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31662 using bind = Desc<SgUnaryOp, SgUnaryOp::Sgop_mode SgUnaryOp::*, &SgUnaryOp::p_mode>;
31663};
31673template <> struct node_from_variant_t<805> { using type = SgUnaryOp; };
31674
31675// Class: UndefDirectiveStatement
31679 static constexpr char const * const name{"UndefDirectiveStatement"};
31680 static constexpr unsigned long variant{806};
31681 static constexpr bool concrete{true};
31682 using subclasses_t = mp::List<>;
31683 using fields_t = mp::List<>;
31684};
31685template <> struct node_from_variant_t<806> { using type = SgUndefDirectiveStatement; };
31686
31687// Class: UndirectedGraphEdge
31690 using base = SgGraphEdge;
31691 static constexpr char const * const name{"UndirectedGraphEdge"};
31692 static constexpr unsigned long variant{807};
31693 static constexpr bool concrete{true};
31694 using subclasses_t = mp::List<>;
31695 using fields_t = mp::List<>;
31696};
31697template <> struct node_from_variant_t<807> { using type = SgUndirectedGraphEdge; };
31698
31699// Class: UnknownArrayOrFunctionReference
31700template <> struct describe_field_t<SgUnknownArrayOrFunctionReference,std::string,&SgUnknownArrayOrFunctionReference::p_name> {
31702 using field_type = std::string;
31703 static constexpr size_t position{0};
31704 static constexpr char const * const name{"name"};
31705 static constexpr char const * const typestr{"std::string"};
31706 static constexpr bool traverse{false};
31707 static constexpr auto mbr_ptr{&SgUnknownArrayOrFunctionReference::p_name};
31708 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31709 using bind = Desc<SgUnknownArrayOrFunctionReference, std::string SgUnknownArrayOrFunctionReference::*, &SgUnknownArrayOrFunctionReference::p_name>;
31710};
31711template <> struct describe_field_t<SgUnknownArrayOrFunctionReference,SgExpression*,&SgUnknownArrayOrFunctionReference::p_named_reference> {
31713 using field_type = SgExpression*;
31714 static constexpr size_t position{1};
31715 static constexpr char const * const name{"named_reference"};
31716 static constexpr char const * const typestr{"SgExpression*"};
31717 static constexpr bool traverse{true};
31718 static constexpr auto mbr_ptr{&SgUnknownArrayOrFunctionReference::p_named_reference};
31719 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31720 using bind = Desc<SgUnknownArrayOrFunctionReference, SgExpression* SgUnknownArrayOrFunctionReference::*, &SgUnknownArrayOrFunctionReference::p_named_reference>;
31721};
31722template <> struct describe_field_t<SgUnknownArrayOrFunctionReference,SgExprListExp*,&SgUnknownArrayOrFunctionReference::p_expression_list> {
31724 using field_type = SgExprListExp*;
31725 static constexpr size_t position{2};
31726 static constexpr char const * const name{"expression_list"};
31727 static constexpr char const * const typestr{"SgExprListExp*"};
31728 static constexpr bool traverse{true};
31729 static constexpr auto mbr_ptr{&SgUnknownArrayOrFunctionReference::p_expression_list};
31730 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31731 using bind = Desc<SgUnknownArrayOrFunctionReference, SgExprListExp* SgUnknownArrayOrFunctionReference::*, &SgUnknownArrayOrFunctionReference::p_expression_list>;
31732};
31742template <> struct node_from_variant_t<808> { using type = SgUnknownArrayOrFunctionReference; };
31743
31744// Class: UnknownFile
31745template <> struct describe_field_t<SgUnknownFile,SgGlobal*,&SgUnknownFile::p_globalScope> {
31746 using parent = SgUnknownFile;
31747 using field_type = SgGlobal*;
31748 static constexpr size_t position{0};
31749 static constexpr char const * const name{"globalScope"};
31750 static constexpr char const * const typestr{"SgGlobal*"};
31751 static constexpr bool traverse{true};
31752 static constexpr auto mbr_ptr{&SgUnknownFile::p_globalScope};
31753 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31754 using bind = Desc<SgUnknownFile, SgGlobal* SgUnknownFile::*, &SgUnknownFile::p_globalScope>;
31755};
31756template <> struct describe_node_t<SgUnknownFile> {
31757 using node = SgUnknownFile;
31758 using base = SgFile;
31759 static constexpr char const * const name{"UnknownFile"};
31760 static constexpr unsigned long variant{809};
31761 static constexpr bool concrete{true};
31762 using subclasses_t = mp::List<>;
31764};
31765template <> struct node_from_variant_t<809> { using type = SgUnknownFile; };
31766
31767// Class: Unparse_Info
31768template <> struct describe_field_t<SgUnparse_Info,SgBitVector,&SgUnparse_Info::p_unparse_attribute> {
31769 using parent = SgUnparse_Info;
31770 using field_type = SgBitVector;
31771 static constexpr size_t position{0};
31772 static constexpr char const * const name{"unparse_attribute"};
31773 static constexpr char const * const typestr{"SgBitVector"};
31774 static constexpr bool traverse{false};
31775 static constexpr auto mbr_ptr{&SgUnparse_Info::p_unparse_attribute};
31776 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31777 using bind = Desc<SgUnparse_Info, SgBitVector SgUnparse_Info::*, &SgUnparse_Info::p_unparse_attribute>;
31778};
31779template <> struct describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_access_attribute> {
31780 using parent = SgUnparse_Info;
31781 using field_type = int;
31782 static constexpr size_t position{1};
31783 static constexpr char const * const name{"access_attribute"};
31784 static constexpr char const * const typestr{"int"};
31785 static constexpr bool traverse{false};
31786 static constexpr auto mbr_ptr{&SgUnparse_Info::p_access_attribute};
31787 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31788 using bind = Desc<SgUnparse_Info, int SgUnparse_Info::*, &SgUnparse_Info::p_access_attribute>;
31789};
31790template <> struct describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_nested_expression> {
31791 using parent = SgUnparse_Info;
31792 using field_type = int;
31793 static constexpr size_t position{2};
31794 static constexpr char const * const name{"nested_expression"};
31795 static constexpr char const * const typestr{"int"};
31796 static constexpr bool traverse{false};
31797 static constexpr auto mbr_ptr{&SgUnparse_Info::p_nested_expression};
31798 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31799 using bind = Desc<SgUnparse_Info, int SgUnparse_Info::*, &SgUnparse_Info::p_nested_expression>;
31800};
31801template <> struct describe_field_t<SgUnparse_Info,std::string,&SgUnparse_Info::p_operator_name> {
31802 using parent = SgUnparse_Info;
31803 using field_type = std::string;
31804 static constexpr size_t position{3};
31805 static constexpr char const * const name{"operator_name"};
31806 static constexpr char const * const typestr{"std::string"};
31807 static constexpr bool traverse{false};
31808 static constexpr auto mbr_ptr{&SgUnparse_Info::p_operator_name};
31809 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31810 using bind = Desc<SgUnparse_Info, std::string SgUnparse_Info::*, &SgUnparse_Info::p_operator_name>;
31811};
31812template <> struct describe_field_t<SgUnparse_Info,SgName,&SgUnparse_Info::p_var_name> {
31813 using parent = SgUnparse_Info;
31814 using field_type = SgName;
31815 static constexpr size_t position{4};
31816 static constexpr char const * const name{"var_name"};
31817 static constexpr char const * const typestr{"SgName"};
31818 static constexpr bool traverse{false};
31819 static constexpr auto mbr_ptr{&SgUnparse_Info::p_var_name};
31820 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31821 using bind = Desc<SgUnparse_Info, SgName SgUnparse_Info::*, &SgUnparse_Info::p_var_name>;
31822};
31823template <> struct describe_field_t<SgUnparse_Info,SgDeclarationStatement*,&SgUnparse_Info::p_declstatement_ptr> {
31824 using parent = SgUnparse_Info;
31826 static constexpr size_t position{5};
31827 static constexpr char const * const name{"declstatement_ptr"};
31828 static constexpr char const * const typestr{"SgDeclarationStatement*"};
31829 static constexpr bool traverse{false};
31830 static constexpr auto mbr_ptr{&SgUnparse_Info::p_declstatement_ptr};
31831 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31832 using bind = Desc<SgUnparse_Info, SgDeclarationStatement* SgUnparse_Info::*, &SgUnparse_Info::p_declstatement_ptr>;
31833};
31834template <> struct describe_field_t<SgUnparse_Info,SgDeclarationStatement*,&SgUnparse_Info::p_declaration_of_context> {
31835 using parent = SgUnparse_Info;
31837 static constexpr size_t position{6};
31838 static constexpr char const * const name{"declaration_of_context"};
31839 static constexpr char const * const typestr{"SgDeclarationStatement*"};
31840 static constexpr bool traverse{false};
31841 static constexpr auto mbr_ptr{&SgUnparse_Info::p_declaration_of_context};
31842 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31843 using bind = Desc<SgUnparse_Info, SgDeclarationStatement* SgUnparse_Info::*, &SgUnparse_Info::p_declaration_of_context>;
31844};
31845template <> struct describe_field_t<SgUnparse_Info,SgNamedType*,&SgUnparse_Info::p_current_context> {
31846 using parent = SgUnparse_Info;
31847 using field_type = SgNamedType*;
31848 static constexpr size_t position{7};
31849 static constexpr char const * const name{"current_context"};
31850 static constexpr char const * const typestr{"SgNamedType*"};
31851 static constexpr bool traverse{false};
31852 static constexpr auto mbr_ptr{&SgUnparse_Info::p_current_context};
31853 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31854 using bind = Desc<SgUnparse_Info, SgNamedType* SgUnparse_Info::*, &SgUnparse_Info::p_current_context>;
31855};
31856template <> struct describe_field_t<SgUnparse_Info,SgName,&SgUnparse_Info::p_array_index_list> {
31857 using parent = SgUnparse_Info;
31858 using field_type = SgName;
31859 static constexpr size_t position{8};
31860 static constexpr char const * const name{"array_index_list"};
31861 static constexpr char const * const typestr{"SgName"};
31862 static constexpr bool traverse{false};
31863 static constexpr auto mbr_ptr{&SgUnparse_Info::p_array_index_list};
31864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31865 using bind = Desc<SgUnparse_Info, SgName SgUnparse_Info::*, &SgUnparse_Info::p_array_index_list>;
31866};
31867template <> struct describe_field_t<SgUnparse_Info,SgNamespaceDeclarationStatement*,&SgUnparse_Info::p_current_namespace> {
31868 using parent = SgUnparse_Info;
31870 static constexpr size_t position{9};
31871 static constexpr char const * const name{"current_namespace"};
31872 static constexpr char const * const typestr{"SgNamespaceDeclarationStatement*"};
31873 static constexpr bool traverse{false};
31874 static constexpr auto mbr_ptr{&SgUnparse_Info::p_current_namespace};
31875 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31876 using bind = Desc<SgUnparse_Info, SgNamespaceDeclarationStatement* SgUnparse_Info::*, &SgUnparse_Info::p_current_namespace>;
31877};
31878template <> struct describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_outputCodeGenerationFormatDelimiters> {
31879 using parent = SgUnparse_Info;
31880 using field_type = bool;
31881 static constexpr size_t position{10};
31882 static constexpr char const * const name{"outputCodeGenerationFormatDelimiters"};
31883 static constexpr char const * const typestr{"bool"};
31884 static constexpr bool traverse{false};
31885 static constexpr auto mbr_ptr{&SgUnparse_Info::p_outputCodeGenerationFormatDelimiters};
31886 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31887 using bind = Desc<SgUnparse_Info, bool SgUnparse_Info::*, &SgUnparse_Info::p_outputCodeGenerationFormatDelimiters>;
31888};
31889template <> struct describe_field_t<SgUnparse_Info,SgQualifiedNamePtrList,&SgUnparse_Info::p_qualifiedNameList> {
31890 using parent = SgUnparse_Info;
31891 using field_type = SgQualifiedNamePtrList;
31892 static constexpr size_t position{11};
31893 static constexpr char const * const name{"qualifiedNameList"};
31894 static constexpr char const * const typestr{"SgQualifiedNamePtrList"};
31895 static constexpr bool traverse{false};
31896 static constexpr auto mbr_ptr{&SgUnparse_Info::p_qualifiedNameList};
31897 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31898 using bind = Desc<SgUnparse_Info, SgQualifiedNamePtrList SgUnparse_Info::*, &SgUnparse_Info::p_qualifiedNameList>;
31899};
31900template <> struct describe_field_t<SgUnparse_Info,SgFunctionCallExp*,&SgUnparse_Info::p_current_function_call> {
31901 using parent = SgUnparse_Info;
31903 static constexpr size_t position{12};
31904 static constexpr char const * const name{"current_function_call"};
31905 static constexpr char const * const typestr{"SgFunctionCallExp*"};
31906 static constexpr bool traverse{false};
31907 static constexpr auto mbr_ptr{&SgUnparse_Info::p_current_function_call};
31908 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31909 using bind = Desc<SgUnparse_Info, SgFunctionCallExp* SgUnparse_Info::*, &SgUnparse_Info::p_current_function_call>;
31910};
31911template <> struct describe_field_t<SgUnparse_Info,SgScopeStatement*,&SgUnparse_Info::p_current_scope> {
31912 using parent = SgUnparse_Info;
31914 static constexpr size_t position{13};
31915 static constexpr char const * const name{"current_scope"};
31916 static constexpr char const * const typestr{"SgScopeStatement*"};
31917 static constexpr bool traverse{false};
31918 static constexpr auto mbr_ptr{&SgUnparse_Info::p_current_scope};
31919 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31920 using bind = Desc<SgUnparse_Info, SgScopeStatement* SgUnparse_Info::*, &SgUnparse_Info::p_current_scope>;
31921};
31922template <> struct describe_field_t<SgUnparse_Info,SgNode*,&SgUnparse_Info::p_reference_node_for_qualification> {
31923 using parent = SgUnparse_Info;
31924 using field_type = SgNode*;
31925 static constexpr size_t position{14};
31926 static constexpr char const * const name{"reference_node_for_qualification"};
31927 static constexpr char const * const typestr{"SgNode*"};
31928 static constexpr bool traverse{false};
31929 static constexpr auto mbr_ptr{&SgUnparse_Info::p_reference_node_for_qualification};
31930 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31931 using bind = Desc<SgUnparse_Info, SgNode* SgUnparse_Info::*, &SgUnparse_Info::p_reference_node_for_qualification>;
31932};
31933template <> struct describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_name_qualification_length> {
31934 using parent = SgUnparse_Info;
31935 using field_type = int;
31936 static constexpr size_t position{15};
31937 static constexpr char const * const name{"name_qualification_length"};
31938 static constexpr char const * const typestr{"int"};
31939 static constexpr bool traverse{false};
31940 static constexpr auto mbr_ptr{&SgUnparse_Info::p_name_qualification_length};
31941 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31942 using bind = Desc<SgUnparse_Info, int SgUnparse_Info::*, &SgUnparse_Info::p_name_qualification_length>;
31943};
31944template <> struct describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_type_elaboration_required> {
31945 using parent = SgUnparse_Info;
31946 using field_type = bool;
31947 static constexpr size_t position{16};
31948 static constexpr char const * const name{"type_elaboration_required"};
31949 static constexpr char const * const typestr{"bool"};
31950 static constexpr bool traverse{false};
31951 static constexpr auto mbr_ptr{&SgUnparse_Info::p_type_elaboration_required};
31952 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31953 using bind = Desc<SgUnparse_Info, bool SgUnparse_Info::*, &SgUnparse_Info::p_type_elaboration_required>;
31954};
31955template <> struct describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_global_qualification_required> {
31956 using parent = SgUnparse_Info;
31957 using field_type = bool;
31958 static constexpr size_t position{17};
31959 static constexpr char const * const name{"global_qualification_required"};
31960 static constexpr char const * const typestr{"bool"};
31961 static constexpr bool traverse{false};
31962 static constexpr auto mbr_ptr{&SgUnparse_Info::p_global_qualification_required};
31963 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31964 using bind = Desc<SgUnparse_Info, bool SgUnparse_Info::*, &SgUnparse_Info::p_global_qualification_required>;
31965};
31966template <> struct describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_nestingLevel> {
31967 using parent = SgUnparse_Info;
31968 using field_type = int;
31969 static constexpr size_t position{18};
31970 static constexpr char const * const name{"nestingLevel"};
31971 static constexpr char const * const typestr{"int"};
31972 static constexpr bool traverse{false};
31973 static constexpr auto mbr_ptr{&SgUnparse_Info::p_nestingLevel};
31974 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31975 using bind = Desc<SgUnparse_Info, int SgUnparse_Info::*, &SgUnparse_Info::p_nestingLevel>;
31976};
31977template <> struct describe_field_t<SgUnparse_Info,SgFile::languageOption_enum,&SgUnparse_Info::p_language> {
31978 using parent = SgUnparse_Info;
31980 static constexpr size_t position{19};
31981 static constexpr char const * const name{"language"};
31982 static constexpr char const * const typestr{"SgFile::languageOption_enum"};
31983 static constexpr bool traverse{false};
31984 static constexpr auto mbr_ptr{&SgUnparse_Info::p_language};
31985 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31986 using bind = Desc<SgUnparse_Info, SgFile::languageOption_enum SgUnparse_Info::*, &SgUnparse_Info::p_language>;
31987};
31988template <> struct describe_field_t<SgUnparse_Info,SgSourceFile*,&SgUnparse_Info::p_current_source_file> {
31989 using parent = SgUnparse_Info;
31990 using field_type = SgSourceFile*;
31991 static constexpr size_t position{20};
31992 static constexpr char const * const name{"current_source_file"};
31993 static constexpr char const * const typestr{"SgSourceFile*"};
31994 static constexpr bool traverse{false};
31995 static constexpr auto mbr_ptr{&SgUnparse_Info::p_current_source_file};
31996 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
31997 using bind = Desc<SgUnparse_Info, SgSourceFile* SgUnparse_Info::*, &SgUnparse_Info::p_current_source_file>;
31998};
31999template <> struct describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_use_generated_name_for_template_arguments> {
32000 using parent = SgUnparse_Info;
32001 using field_type = bool;
32002 static constexpr size_t position{21};
32003 static constexpr char const * const name{"use_generated_name_for_template_arguments"};
32004 static constexpr char const * const typestr{"bool"};
32005 static constexpr bool traverse{false};
32006 static constexpr auto mbr_ptr{&SgUnparse_Info::p_use_generated_name_for_template_arguments};
32007 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32008 using bind = Desc<SgUnparse_Info, bool SgUnparse_Info::*, &SgUnparse_Info::p_use_generated_name_for_template_arguments>;
32009};
32010template <> struct describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_user_defined_literal> {
32011 using parent = SgUnparse_Info;
32012 using field_type = bool;
32013 static constexpr size_t position{22};
32014 static constexpr char const * const name{"user_defined_literal"};
32015 static constexpr char const * const typestr{"bool"};
32016 static constexpr bool traverse{false};
32017 static constexpr auto mbr_ptr{&SgUnparse_Info::p_user_defined_literal};
32018 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32019 using bind = Desc<SgUnparse_Info, bool SgUnparse_Info::*, &SgUnparse_Info::p_user_defined_literal>;
32020};
32021template <> struct describe_field_t<SgUnparse_Info,SgDeclarationStatement*,&SgUnparse_Info::p_declstatement_associated_with_type> {
32022 using parent = SgUnparse_Info;
32024 static constexpr size_t position{23};
32025 static constexpr char const * const name{"declstatement_associated_with_type"};
32026 static constexpr char const * const typestr{"SgDeclarationStatement*"};
32027 static constexpr bool traverse{false};
32028 static constexpr auto mbr_ptr{&SgUnparse_Info::p_declstatement_associated_with_type};
32029 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32030 using bind = Desc<SgUnparse_Info, SgDeclarationStatement* SgUnparse_Info::*, &SgUnparse_Info::p_declstatement_associated_with_type>;
32031};
32032template <> struct describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_context_for_added_parentheses> {
32033 using parent = SgUnparse_Info;
32034 using field_type = bool;
32035 static constexpr size_t position{24};
32036 static constexpr char const * const name{"context_for_added_parentheses"};
32037 static constexpr char const * const typestr{"bool"};
32038 static constexpr bool traverse{false};
32039 static constexpr auto mbr_ptr{&SgUnparse_Info::p_context_for_added_parentheses};
32040 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32041 using bind = Desc<SgUnparse_Info, bool SgUnparse_Info::*, &SgUnparse_Info::p_context_for_added_parentheses>;
32042};
32043template <> struct describe_node_t<SgUnparse_Info> {
32044 using node = SgUnparse_Info;
32045 using base = SgSupport;
32046 static constexpr char const * const name{"Unparse_Info"};
32047 static constexpr unsigned long variant{811};
32048 static constexpr bool concrete{true};
32049 using subclasses_t = mp::List<>;
32050 using fields_t = mp::List<describe_field_t<SgUnparse_Info,SgBitVector,&SgUnparse_Info::p_unparse_attribute>, describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_access_attribute>, describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_nested_expression>, describe_field_t<SgUnparse_Info,std::string,&SgUnparse_Info::p_operator_name>, describe_field_t<SgUnparse_Info,SgName,&SgUnparse_Info::p_var_name>, describe_field_t<SgUnparse_Info,SgDeclarationStatement*,&SgUnparse_Info::p_declstatement_ptr>, describe_field_t<SgUnparse_Info,SgDeclarationStatement*,&SgUnparse_Info::p_declaration_of_context>, describe_field_t<SgUnparse_Info,SgNamedType*,&SgUnparse_Info::p_current_context>, describe_field_t<SgUnparse_Info,SgName,&SgUnparse_Info::p_array_index_list>, describe_field_t<SgUnparse_Info,SgNamespaceDeclarationStatement*,&SgUnparse_Info::p_current_namespace>, describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_outputCodeGenerationFormatDelimiters>, describe_field_t<SgUnparse_Info,SgQualifiedNamePtrList,&SgUnparse_Info::p_qualifiedNameList>, describe_field_t<SgUnparse_Info,SgFunctionCallExp*,&SgUnparse_Info::p_current_function_call>, describe_field_t<SgUnparse_Info,SgScopeStatement*,&SgUnparse_Info::p_current_scope>, describe_field_t<SgUnparse_Info,SgNode*,&SgUnparse_Info::p_reference_node_for_qualification>, describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_name_qualification_length>, describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_type_elaboration_required>, describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_global_qualification_required>, describe_field_t<SgUnparse_Info,int,&SgUnparse_Info::p_nestingLevel>, describe_field_t<SgUnparse_Info,SgFile::languageOption_enum,&SgUnparse_Info::p_language>, describe_field_t<SgUnparse_Info,SgSourceFile*,&SgUnparse_Info::p_current_source_file>, describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_use_generated_name_for_template_arguments>, describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_user_defined_literal>, describe_field_t<SgUnparse_Info,SgDeclarationStatement*,&SgUnparse_Info::p_declstatement_associated_with_type>, describe_field_t<SgUnparse_Info,bool,&SgUnparse_Info::p_context_for_added_parentheses>>;
32051};
32052template <> struct node_from_variant_t<811> { using type = SgUnparse_Info; };
32053
32054// Class: UnsignedCharVal
32055template <> struct describe_field_t<SgUnsignedCharVal,unsigned char,&SgUnsignedCharVal::p_value> {
32056 using parent = SgUnsignedCharVal;
32057 using field_type = unsigned char;
32058 static constexpr size_t position{0};
32059 static constexpr char const * const name{"value"};
32060 static constexpr char const * const typestr{"unsigned char"};
32061 static constexpr bool traverse{false};
32062 static constexpr auto mbr_ptr{&SgUnsignedCharVal::p_value};
32063 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32064 using bind = Desc<SgUnsignedCharVal, unsigned char SgUnsignedCharVal::*, &SgUnsignedCharVal::p_value>;
32065};
32066template <> struct describe_field_t<SgUnsignedCharVal,std::string,&SgUnsignedCharVal::p_valueString> {
32067 using parent = SgUnsignedCharVal;
32068 using field_type = std::string;
32069 static constexpr size_t position{1};
32070 static constexpr char const * const name{"valueString"};
32071 static constexpr char const * const typestr{"std::string"};
32072 static constexpr bool traverse{false};
32073 static constexpr auto mbr_ptr{&SgUnsignedCharVal::p_valueString};
32074 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32075 using bind = Desc<SgUnsignedCharVal, std::string SgUnsignedCharVal::*, &SgUnsignedCharVal::p_valueString>;
32076};
32078 using node = SgUnsignedCharVal;
32079 using base = SgValueExp;
32080 static constexpr char const * const name{"UnsignedCharVal"};
32081 static constexpr unsigned long variant{812};
32082 static constexpr bool concrete{true};
32083 using subclasses_t = mp::List<>;
32085};
32086template <> struct node_from_variant_t<812> { using type = SgUnsignedCharVal; };
32087
32088// Class: UnsignedIntVal
32089template <> struct describe_field_t<SgUnsignedIntVal,unsigned int,&SgUnsignedIntVal::p_value> {
32090 using parent = SgUnsignedIntVal;
32091 using field_type = unsigned int;
32092 static constexpr size_t position{0};
32093 static constexpr char const * const name{"value"};
32094 static constexpr char const * const typestr{"unsigned int"};
32095 static constexpr bool traverse{false};
32096 static constexpr auto mbr_ptr{&SgUnsignedIntVal::p_value};
32097 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32098 using bind = Desc<SgUnsignedIntVal, unsigned int SgUnsignedIntVal::*, &SgUnsignedIntVal::p_value>;
32099};
32100template <> struct describe_field_t<SgUnsignedIntVal,std::string,&SgUnsignedIntVal::p_valueString> {
32101 using parent = SgUnsignedIntVal;
32102 using field_type = std::string;
32103 static constexpr size_t position{1};
32104 static constexpr char const * const name{"valueString"};
32105 static constexpr char const * const typestr{"std::string"};
32106 static constexpr bool traverse{false};
32107 static constexpr auto mbr_ptr{&SgUnsignedIntVal::p_valueString};
32108 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32109 using bind = Desc<SgUnsignedIntVal, std::string SgUnsignedIntVal::*, &SgUnsignedIntVal::p_valueString>;
32110};
32112 using node = SgUnsignedIntVal;
32113 using base = SgValueExp;
32114 static constexpr char const * const name{"UnsignedIntVal"};
32115 static constexpr unsigned long variant{813};
32116 static constexpr bool concrete{true};
32117 using subclasses_t = mp::List<>;
32119};
32120template <> struct node_from_variant_t<813> { using type = SgUnsignedIntVal; };
32121
32122// Class: UnsignedLongLongIntVal
32123template <> struct describe_field_t<SgUnsignedLongLongIntVal,unsigned long long int,&SgUnsignedLongLongIntVal::p_value> {
32125 using field_type = unsigned long long int;
32126 static constexpr size_t position{0};
32127 static constexpr char const * const name{"value"};
32128 static constexpr char const * const typestr{"unsigned long long int"};
32129 static constexpr bool traverse{false};
32130 static constexpr auto mbr_ptr{&SgUnsignedLongLongIntVal::p_value};
32131 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32132 using bind = Desc<SgUnsignedLongLongIntVal, unsigned long long int SgUnsignedLongLongIntVal::*, &SgUnsignedLongLongIntVal::p_value>;
32133};
32134template <> struct describe_field_t<SgUnsignedLongLongIntVal,std::string,&SgUnsignedLongLongIntVal::p_valueString> {
32136 using field_type = std::string;
32137 static constexpr size_t position{1};
32138 static constexpr char const * const name{"valueString"};
32139 static constexpr char const * const typestr{"std::string"};
32140 static constexpr bool traverse{false};
32141 static constexpr auto mbr_ptr{&SgUnsignedLongLongIntVal::p_valueString};
32142 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32143 using bind = Desc<SgUnsignedLongLongIntVal, std::string SgUnsignedLongLongIntVal::*, &SgUnsignedLongLongIntVal::p_valueString>;
32144};
32147 using base = SgValueExp;
32148 static constexpr char const * const name{"UnsignedLongLongIntVal"};
32149 static constexpr unsigned long variant{814};
32150 static constexpr bool concrete{true};
32151 using subclasses_t = mp::List<>;
32153};
32154template <> struct node_from_variant_t<814> { using type = SgUnsignedLongLongIntVal; };
32155
32156// Class: UnsignedLongVal
32157template <> struct describe_field_t<SgUnsignedLongVal,unsigned long,&SgUnsignedLongVal::p_value> {
32158 using parent = SgUnsignedLongVal;
32159 using field_type = unsigned long;
32160 static constexpr size_t position{0};
32161 static constexpr char const * const name{"value"};
32162 static constexpr char const * const typestr{"unsigned long"};
32163 static constexpr bool traverse{false};
32164 static constexpr auto mbr_ptr{&SgUnsignedLongVal::p_value};
32165 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32166 using bind = Desc<SgUnsignedLongVal, unsigned long SgUnsignedLongVal::*, &SgUnsignedLongVal::p_value>;
32167};
32168template <> struct describe_field_t<SgUnsignedLongVal,std::string,&SgUnsignedLongVal::p_valueString> {
32169 using parent = SgUnsignedLongVal;
32170 using field_type = std::string;
32171 static constexpr size_t position{1};
32172 static constexpr char const * const name{"valueString"};
32173 static constexpr char const * const typestr{"std::string"};
32174 static constexpr bool traverse{false};
32175 static constexpr auto mbr_ptr{&SgUnsignedLongVal::p_valueString};
32176 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32177 using bind = Desc<SgUnsignedLongVal, std::string SgUnsignedLongVal::*, &SgUnsignedLongVal::p_valueString>;
32178};
32180 using node = SgUnsignedLongVal;
32181 using base = SgValueExp;
32182 static constexpr char const * const name{"UnsignedLongVal"};
32183 static constexpr unsigned long variant{815};
32184 static constexpr bool concrete{true};
32185 using subclasses_t = mp::List<>;
32187};
32188template <> struct node_from_variant_t<815> { using type = SgUnsignedLongVal; };
32189
32190// Class: UnsignedShortVal
32191template <> struct describe_field_t<SgUnsignedShortVal,unsigned short,&SgUnsignedShortVal::p_value> {
32192 using parent = SgUnsignedShortVal;
32193 using field_type = unsigned short;
32194 static constexpr size_t position{0};
32195 static constexpr char const * const name{"value"};
32196 static constexpr char const * const typestr{"unsigned short"};
32197 static constexpr bool traverse{false};
32198 static constexpr auto mbr_ptr{&SgUnsignedShortVal::p_value};
32199 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32200 using bind = Desc<SgUnsignedShortVal, unsigned short SgUnsignedShortVal::*, &SgUnsignedShortVal::p_value>;
32201};
32202template <> struct describe_field_t<SgUnsignedShortVal,std::string,&SgUnsignedShortVal::p_valueString> {
32203 using parent = SgUnsignedShortVal;
32204 using field_type = std::string;
32205 static constexpr size_t position{1};
32206 static constexpr char const * const name{"valueString"};
32207 static constexpr char const * const typestr{"std::string"};
32208 static constexpr bool traverse{false};
32209 static constexpr auto mbr_ptr{&SgUnsignedShortVal::p_valueString};
32210 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32211 using bind = Desc<SgUnsignedShortVal, std::string SgUnsignedShortVal::*, &SgUnsignedShortVal::p_valueString>;
32212};
32214 using node = SgUnsignedShortVal;
32215 using base = SgValueExp;
32216 static constexpr char const * const name{"UnsignedShortVal"};
32217 static constexpr unsigned long variant{816};
32218 static constexpr bool concrete{true};
32219 using subclasses_t = mp::List<>;
32221};
32222template <> struct node_from_variant_t<816> { using type = SgUnsignedShortVal; };
32223
32224// Class: UpcBarrierStatement
32225template <> struct describe_field_t<SgUpcBarrierStatement,SgExpression*,&SgUpcBarrierStatement::p_barrier_expression> {
32227 using field_type = SgExpression*;
32228 static constexpr size_t position{0};
32229 static constexpr char const * const name{"barrier_expression"};
32230 static constexpr char const * const typestr{"SgExpression*"};
32231 static constexpr bool traverse{true};
32232 static constexpr auto mbr_ptr{&SgUpcBarrierStatement::p_barrier_expression};
32233 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32234 using bind = Desc<SgUpcBarrierStatement, SgExpression* SgUpcBarrierStatement::*, &SgUpcBarrierStatement::p_barrier_expression>;
32235};
32238 using base = SgStatement;
32239 static constexpr char const * const name{"UpcBarrierStatement"};
32240 static constexpr unsigned long variant{817};
32241 static constexpr bool concrete{true};
32242 using subclasses_t = mp::List<>;
32244};
32245template <> struct node_from_variant_t<817> { using type = SgUpcBarrierStatement; };
32246
32247// Class: UpcBlocksizeofExpression
32248template <> struct describe_field_t<SgUpcBlocksizeofExpression,SgExpression*,&SgUpcBlocksizeofExpression::p_expression> {
32250 using field_type = SgExpression*;
32251 static constexpr size_t position{0};
32252 static constexpr char const * const name{"expression"};
32253 static constexpr char const * const typestr{"SgExpression*"};
32254 static constexpr bool traverse{true};
32255 static constexpr auto mbr_ptr{&SgUpcBlocksizeofExpression::p_expression};
32256 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32257 using bind = Desc<SgUpcBlocksizeofExpression, SgExpression* SgUpcBlocksizeofExpression::*, &SgUpcBlocksizeofExpression::p_expression>;
32258};
32259template <> struct describe_field_t<SgUpcBlocksizeofExpression,SgType*,&SgUpcBlocksizeofExpression::p_operand_type> {
32261 using field_type = SgType*;
32262 static constexpr size_t position{1};
32263 static constexpr char const * const name{"operand_type"};
32264 static constexpr char const * const typestr{"SgType*"};
32265 static constexpr bool traverse{false};
32266 static constexpr auto mbr_ptr{&SgUpcBlocksizeofExpression::p_operand_type};
32267 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32268 using bind = Desc<SgUpcBlocksizeofExpression, SgType* SgUpcBlocksizeofExpression::*, &SgUpcBlocksizeofExpression::p_operand_type>;
32269};
32270template <> struct describe_field_t<SgUpcBlocksizeofExpression,SgType*,&SgUpcBlocksizeofExpression::p_expression_type> {
32272 using field_type = SgType*;
32273 static constexpr size_t position{2};
32274 static constexpr char const * const name{"expression_type"};
32275 static constexpr char const * const typestr{"SgType*"};
32276 static constexpr bool traverse{false};
32277 static constexpr auto mbr_ptr{&SgUpcBlocksizeofExpression::p_expression_type};
32278 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32279 using bind = Desc<SgUpcBlocksizeofExpression, SgType* SgUpcBlocksizeofExpression::*, &SgUpcBlocksizeofExpression::p_expression_type>;
32280};
32290template <> struct node_from_variant_t<818> { using type = SgUpcBlocksizeofExpression; };
32291
32292// Class: UpcElemsizeofExpression
32293template <> struct describe_field_t<SgUpcElemsizeofExpression,SgExpression*,&SgUpcElemsizeofExpression::p_expression> {
32295 using field_type = SgExpression*;
32296 static constexpr size_t position{0};
32297 static constexpr char const * const name{"expression"};
32298 static constexpr char const * const typestr{"SgExpression*"};
32299 static constexpr bool traverse{true};
32300 static constexpr auto mbr_ptr{&SgUpcElemsizeofExpression::p_expression};
32301 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32302 using bind = Desc<SgUpcElemsizeofExpression, SgExpression* SgUpcElemsizeofExpression::*, &SgUpcElemsizeofExpression::p_expression>;
32303};
32304template <> struct describe_field_t<SgUpcElemsizeofExpression,SgType*,&SgUpcElemsizeofExpression::p_operand_type> {
32306 using field_type = SgType*;
32307 static constexpr size_t position{1};
32308 static constexpr char const * const name{"operand_type"};
32309 static constexpr char const * const typestr{"SgType*"};
32310 static constexpr bool traverse{false};
32311 static constexpr auto mbr_ptr{&SgUpcElemsizeofExpression::p_operand_type};
32312 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32313 using bind = Desc<SgUpcElemsizeofExpression, SgType* SgUpcElemsizeofExpression::*, &SgUpcElemsizeofExpression::p_operand_type>;
32314};
32315template <> struct describe_field_t<SgUpcElemsizeofExpression,SgType*,&SgUpcElemsizeofExpression::p_expression_type> {
32317 using field_type = SgType*;
32318 static constexpr size_t position{2};
32319 static constexpr char const * const name{"expression_type"};
32320 static constexpr char const * const typestr{"SgType*"};
32321 static constexpr bool traverse{false};
32322 static constexpr auto mbr_ptr{&SgUpcElemsizeofExpression::p_expression_type};
32323 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32324 using bind = Desc<SgUpcElemsizeofExpression, SgType* SgUpcElemsizeofExpression::*, &SgUpcElemsizeofExpression::p_expression_type>;
32325};
32335template <> struct node_from_variant_t<819> { using type = SgUpcElemsizeofExpression; };
32336
32337// Class: UpcFenceStatement
32339 using node = SgUpcFenceStatement;
32340 using base = SgStatement;
32341 static constexpr char const * const name{"UpcFenceStatement"};
32342 static constexpr unsigned long variant{820};
32343 static constexpr bool concrete{true};
32344 using subclasses_t = mp::List<>;
32345 using fields_t = mp::List<>;
32346};
32347template <> struct node_from_variant_t<820> { using type = SgUpcFenceStatement; };
32348
32349// Class: UpcForAllStatement
32350template <> struct describe_field_t<SgUpcForAllStatement,SgForInitStatement*,&SgUpcForAllStatement::p_for_init_stmt> {
32353 static constexpr size_t position{0};
32354 static constexpr char const * const name{"for_init_stmt"};
32355 static constexpr char const * const typestr{"SgForInitStatement*"};
32356 static constexpr bool traverse{true};
32357 static constexpr auto mbr_ptr{&SgUpcForAllStatement::p_for_init_stmt};
32358 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32359 using bind = Desc<SgUpcForAllStatement, SgForInitStatement* SgUpcForAllStatement::*, &SgUpcForAllStatement::p_for_init_stmt>;
32360};
32361template <> struct describe_field_t<SgUpcForAllStatement,SgStatement*,&SgUpcForAllStatement::p_test> {
32363 using field_type = SgStatement*;
32364 static constexpr size_t position{1};
32365 static constexpr char const * const name{"test"};
32366 static constexpr char const * const typestr{"SgStatement*"};
32367 static constexpr bool traverse{true};
32368 static constexpr auto mbr_ptr{&SgUpcForAllStatement::p_test};
32369 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32370 using bind = Desc<SgUpcForAllStatement, SgStatement* SgUpcForAllStatement::*, &SgUpcForAllStatement::p_test>;
32371};
32372template <> struct describe_field_t<SgUpcForAllStatement,SgExpression*,&SgUpcForAllStatement::p_increment> {
32374 using field_type = SgExpression*;
32375 static constexpr size_t position{2};
32376 static constexpr char const * const name{"increment"};
32377 static constexpr char const * const typestr{"SgExpression*"};
32378 static constexpr bool traverse{true};
32379 static constexpr auto mbr_ptr{&SgUpcForAllStatement::p_increment};
32380 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32381 using bind = Desc<SgUpcForAllStatement, SgExpression* SgUpcForAllStatement::*, &SgUpcForAllStatement::p_increment>;
32382};
32383template <> struct describe_field_t<SgUpcForAllStatement,SgExpression*,&SgUpcForAllStatement::p_affinity> {
32385 using field_type = SgExpression*;
32386 static constexpr size_t position{3};
32387 static constexpr char const * const name{"affinity"};
32388 static constexpr char const * const typestr{"SgExpression*"};
32389 static constexpr bool traverse{true};
32390 static constexpr auto mbr_ptr{&SgUpcForAllStatement::p_affinity};
32391 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32392 using bind = Desc<SgUpcForAllStatement, SgExpression* SgUpcForAllStatement::*, &SgUpcForAllStatement::p_affinity>;
32393};
32394template <> struct describe_field_t<SgUpcForAllStatement,SgStatement*,&SgUpcForAllStatement::p_loop_body> {
32396 using field_type = SgStatement*;
32397 static constexpr size_t position{4};
32398 static constexpr char const * const name{"loop_body"};
32399 static constexpr char const * const typestr{"SgStatement*"};
32400 static constexpr bool traverse{true};
32401 static constexpr auto mbr_ptr{&SgUpcForAllStatement::p_loop_body};
32402 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32403 using bind = Desc<SgUpcForAllStatement, SgStatement* SgUpcForAllStatement::*, &SgUpcForAllStatement::p_loop_body>;
32404};
32414template <> struct node_from_variant_t<821> { using type = SgUpcForAllStatement; };
32415
32416// Class: UpcLocalsizeofExpression
32417template <> struct describe_field_t<SgUpcLocalsizeofExpression,SgExpression*,&SgUpcLocalsizeofExpression::p_expression> {
32419 using field_type = SgExpression*;
32420 static constexpr size_t position{0};
32421 static constexpr char const * const name{"expression"};
32422 static constexpr char const * const typestr{"SgExpression*"};
32423 static constexpr bool traverse{true};
32424 static constexpr auto mbr_ptr{&SgUpcLocalsizeofExpression::p_expression};
32425 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32426 using bind = Desc<SgUpcLocalsizeofExpression, SgExpression* SgUpcLocalsizeofExpression::*, &SgUpcLocalsizeofExpression::p_expression>;
32427};
32428template <> struct describe_field_t<SgUpcLocalsizeofExpression,SgType*,&SgUpcLocalsizeofExpression::p_operand_type> {
32430 using field_type = SgType*;
32431 static constexpr size_t position{1};
32432 static constexpr char const * const name{"operand_type"};
32433 static constexpr char const * const typestr{"SgType*"};
32434 static constexpr bool traverse{false};
32435 static constexpr auto mbr_ptr{&SgUpcLocalsizeofExpression::p_operand_type};
32436 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32437 using bind = Desc<SgUpcLocalsizeofExpression, SgType* SgUpcLocalsizeofExpression::*, &SgUpcLocalsizeofExpression::p_operand_type>;
32438};
32439template <> struct describe_field_t<SgUpcLocalsizeofExpression,SgType*,&SgUpcLocalsizeofExpression::p_expression_type> {
32441 using field_type = SgType*;
32442 static constexpr size_t position{2};
32443 static constexpr char const * const name{"expression_type"};
32444 static constexpr char const * const typestr{"SgType*"};
32445 static constexpr bool traverse{false};
32446 static constexpr auto mbr_ptr{&SgUpcLocalsizeofExpression::p_expression_type};
32447 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32448 using bind = Desc<SgUpcLocalsizeofExpression, SgType* SgUpcLocalsizeofExpression::*, &SgUpcLocalsizeofExpression::p_expression_type>;
32449};
32459template <> struct node_from_variant_t<822> { using type = SgUpcLocalsizeofExpression; };
32460
32461// Class: UpcMythread
32462template <> struct describe_field_t<SgUpcMythread,int,&SgUpcMythread::p_value> {
32463 using parent = SgUpcMythread;
32464 using field_type = int;
32465 static constexpr size_t position{0};
32466 static constexpr char const * const name{"value"};
32467 static constexpr char const * const typestr{"int"};
32468 static constexpr bool traverse{false};
32469 static constexpr auto mbr_ptr{&SgUpcMythread::p_value};
32470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32471 using bind = Desc<SgUpcMythread, int SgUpcMythread::*, &SgUpcMythread::p_value>;
32472};
32473template <> struct describe_field_t<SgUpcMythread,std::string,&SgUpcMythread::p_valueString> {
32474 using parent = SgUpcMythread;
32475 using field_type = std::string;
32476 static constexpr size_t position{1};
32477 static constexpr char const * const name{"valueString"};
32478 static constexpr char const * const typestr{"std::string"};
32479 static constexpr bool traverse{false};
32480 static constexpr auto mbr_ptr{&SgUpcMythread::p_valueString};
32481 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32482 using bind = Desc<SgUpcMythread, std::string SgUpcMythread::*, &SgUpcMythread::p_valueString>;
32483};
32484template <> struct describe_node_t<SgUpcMythread> {
32485 using node = SgUpcMythread;
32486 using base = SgValueExp;
32487 static constexpr char const * const name{"UpcMythread"};
32488 static constexpr unsigned long variant{823};
32489 static constexpr bool concrete{true};
32490 using subclasses_t = mp::List<>;
32492};
32493template <> struct node_from_variant_t<823> { using type = SgUpcMythread; };
32494
32495// Class: UpcNotifyStatement
32496template <> struct describe_field_t<SgUpcNotifyStatement,SgExpression*,&SgUpcNotifyStatement::p_notify_expression> {
32498 using field_type = SgExpression*;
32499 static constexpr size_t position{0};
32500 static constexpr char const * const name{"notify_expression"};
32501 static constexpr char const * const typestr{"SgExpression*"};
32502 static constexpr bool traverse{true};
32503 static constexpr auto mbr_ptr{&SgUpcNotifyStatement::p_notify_expression};
32504 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32505 using bind = Desc<SgUpcNotifyStatement, SgExpression* SgUpcNotifyStatement::*, &SgUpcNotifyStatement::p_notify_expression>;
32506};
32508 using node = SgUpcNotifyStatement;
32509 using base = SgStatement;
32510 static constexpr char const * const name{"UpcNotifyStatement"};
32511 static constexpr unsigned long variant{824};
32512 static constexpr bool concrete{true};
32513 using subclasses_t = mp::List<>;
32515};
32516template <> struct node_from_variant_t<824> { using type = SgUpcNotifyStatement; };
32517
32518// Class: UpcThreads
32519template <> struct describe_field_t<SgUpcThreads,int,&SgUpcThreads::p_value> {
32520 using parent = SgUpcThreads;
32521 using field_type = int;
32522 static constexpr size_t position{0};
32523 static constexpr char const * const name{"value"};
32524 static constexpr char const * const typestr{"int"};
32525 static constexpr bool traverse{false};
32526 static constexpr auto mbr_ptr{&SgUpcThreads::p_value};
32527 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32528 using bind = Desc<SgUpcThreads, int SgUpcThreads::*, &SgUpcThreads::p_value>;
32529};
32530template <> struct describe_field_t<SgUpcThreads,std::string,&SgUpcThreads::p_valueString> {
32531 using parent = SgUpcThreads;
32532 using field_type = std::string;
32533 static constexpr size_t position{1};
32534 static constexpr char const * const name{"valueString"};
32535 static constexpr char const * const typestr{"std::string"};
32536 static constexpr bool traverse{false};
32537 static constexpr auto mbr_ptr{&SgUpcThreads::p_valueString};
32538 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32539 using bind = Desc<SgUpcThreads, std::string SgUpcThreads::*, &SgUpcThreads::p_valueString>;
32540};
32541template <> struct describe_node_t<SgUpcThreads> {
32542 using node = SgUpcThreads;
32543 using base = SgValueExp;
32544 static constexpr char const * const name{"UpcThreads"};
32545 static constexpr unsigned long variant{825};
32546 static constexpr bool concrete{true};
32547 using subclasses_t = mp::List<>;
32549};
32550template <> struct node_from_variant_t<825> { using type = SgUpcThreads; };
32551
32552// Class: UpcWaitStatement
32553template <> struct describe_field_t<SgUpcWaitStatement,SgExpression*,&SgUpcWaitStatement::p_wait_expression> {
32554 using parent = SgUpcWaitStatement;
32555 using field_type = SgExpression*;
32556 static constexpr size_t position{0};
32557 static constexpr char const * const name{"wait_expression"};
32558 static constexpr char const * const typestr{"SgExpression*"};
32559 static constexpr bool traverse{true};
32560 static constexpr auto mbr_ptr{&SgUpcWaitStatement::p_wait_expression};
32561 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32562 using bind = Desc<SgUpcWaitStatement, SgExpression* SgUpcWaitStatement::*, &SgUpcWaitStatement::p_wait_expression>;
32563};
32565 using node = SgUpcWaitStatement;
32566 using base = SgStatement;
32567 static constexpr char const * const name{"UpcWaitStatement"};
32568 static constexpr unsigned long variant{826};
32569 static constexpr bool concrete{true};
32570 using subclasses_t = mp::List<>;
32572};
32573template <> struct node_from_variant_t<826> { using type = SgUpcWaitStatement; };
32574
32575// Class: UseStatement
32576template <> struct describe_field_t<SgUseStatement,SgName,&SgUseStatement::p_name> {
32577 using parent = SgUseStatement;
32578 using field_type = SgName;
32579 static constexpr size_t position{0};
32580 static constexpr char const * const name{"name"};
32581 static constexpr char const * const typestr{"SgName"};
32582 static constexpr bool traverse{false};
32583 static constexpr auto mbr_ptr{&SgUseStatement::p_name};
32584 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32585 using bind = Desc<SgUseStatement, SgName SgUseStatement::*, &SgUseStatement::p_name>;
32586};
32587template <> struct describe_field_t<SgUseStatement,bool,&SgUseStatement::p_only_option> {
32588 using parent = SgUseStatement;
32589 using field_type = bool;
32590 static constexpr size_t position{1};
32591 static constexpr char const * const name{"only_option"};
32592 static constexpr char const * const typestr{"bool"};
32593 static constexpr bool traverse{false};
32594 static constexpr auto mbr_ptr{&SgUseStatement::p_only_option};
32595 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32596 using bind = Desc<SgUseStatement, bool SgUseStatement::*, &SgUseStatement::p_only_option>;
32597};
32598template <> struct describe_field_t<SgUseStatement,std::string,&SgUseStatement::p_module_nature> {
32599 using parent = SgUseStatement;
32600 using field_type = std::string;
32601 static constexpr size_t position{2};
32602 static constexpr char const * const name{"module_nature"};
32603 static constexpr char const * const typestr{"std::string"};
32604 static constexpr bool traverse{false};
32605 static constexpr auto mbr_ptr{&SgUseStatement::p_module_nature};
32606 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32607 using bind = Desc<SgUseStatement, std::string SgUseStatement::*, &SgUseStatement::p_module_nature>;
32608};
32609template <> struct describe_field_t<SgUseStatement,SgRenamePairPtrList,&SgUseStatement::p_rename_list> {
32610 using parent = SgUseStatement;
32611 using field_type = SgRenamePairPtrList;
32612 static constexpr size_t position{3};
32613 static constexpr char const * const name{"rename_list"};
32614 static constexpr char const * const typestr{"SgRenamePairPtrList"};
32615 static constexpr bool traverse{true};
32616 static constexpr auto mbr_ptr{&SgUseStatement::p_rename_list};
32617 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32618 using bind = Desc<SgUseStatement, SgRenamePairPtrList SgUseStatement::*, &SgUseStatement::p_rename_list>;
32619};
32620template <> struct describe_field_t<SgUseStatement,SgModuleStatement*,&SgUseStatement::p_module> {
32621 using parent = SgUseStatement;
32623 static constexpr size_t position{4};
32624 static constexpr char const * const name{"module"};
32625 static constexpr char const * const typestr{"SgModuleStatement*"};
32626 static constexpr bool traverse{false};
32627 static constexpr auto mbr_ptr{&SgUseStatement::p_module};
32628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32629 using bind = Desc<SgUseStatement, SgModuleStatement* SgUseStatement::*, &SgUseStatement::p_module>;
32630};
32640template <> struct node_from_variant_t<827> { using type = SgUseStatement; };
32641
32642// Class: UserDefinedBinaryOp
32643template <> struct describe_field_t<SgUserDefinedBinaryOp,SgName,&SgUserDefinedBinaryOp::p_operator_name> {
32645 using field_type = SgName;
32646 static constexpr size_t position{0};
32647 static constexpr char const * const name{"operator_name"};
32648 static constexpr char const * const typestr{"SgName"};
32649 static constexpr bool traverse{false};
32650 static constexpr auto mbr_ptr{&SgUserDefinedBinaryOp::p_operator_name};
32651 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32652 using bind = Desc<SgUserDefinedBinaryOp, SgName SgUserDefinedBinaryOp::*, &SgUserDefinedBinaryOp::p_operator_name>;
32653};
32654template <> struct describe_field_t<SgUserDefinedBinaryOp,SgFunctionSymbol*,&SgUserDefinedBinaryOp::p_symbol> {
32657 static constexpr size_t position{1};
32658 static constexpr char const * const name{"symbol"};
32659 static constexpr char const * const typestr{"SgFunctionSymbol*"};
32660 static constexpr bool traverse{false};
32661 static constexpr auto mbr_ptr{&SgUserDefinedBinaryOp::p_symbol};
32662 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32663 using bind = Desc<SgUserDefinedBinaryOp, SgFunctionSymbol* SgUserDefinedBinaryOp::*, &SgUserDefinedBinaryOp::p_symbol>;
32664};
32667 using base = SgBinaryOp;
32668 static constexpr char const * const name{"UserDefinedBinaryOp"};
32669 static constexpr unsigned long variant{828};
32670 static constexpr bool concrete{true};
32671 using subclasses_t = mp::List<>;
32673};
32674template <> struct node_from_variant_t<828> { using type = SgUserDefinedBinaryOp; };
32675
32676// Class: UserDefinedUnaryOp
32677template <> struct describe_field_t<SgUserDefinedUnaryOp,SgName,&SgUserDefinedUnaryOp::p_operator_name> {
32679 using field_type = SgName;
32680 static constexpr size_t position{0};
32681 static constexpr char const * const name{"operator_name"};
32682 static constexpr char const * const typestr{"SgName"};
32683 static constexpr bool traverse{false};
32684 static constexpr auto mbr_ptr{&SgUserDefinedUnaryOp::p_operator_name};
32685 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32686 using bind = Desc<SgUserDefinedUnaryOp, SgName SgUserDefinedUnaryOp::*, &SgUserDefinedUnaryOp::p_operator_name>;
32687};
32688template <> struct describe_field_t<SgUserDefinedUnaryOp,SgFunctionSymbol*,&SgUserDefinedUnaryOp::p_symbol> {
32691 static constexpr size_t position{1};
32692 static constexpr char const * const name{"symbol"};
32693 static constexpr char const * const typestr{"SgFunctionSymbol*"};
32694 static constexpr bool traverse{false};
32695 static constexpr auto mbr_ptr{&SgUserDefinedUnaryOp::p_symbol};
32696 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32697 using bind = Desc<SgUserDefinedUnaryOp, SgFunctionSymbol* SgUserDefinedUnaryOp::*, &SgUserDefinedUnaryOp::p_symbol>;
32698};
32700 using node = SgUserDefinedUnaryOp;
32701 using base = SgUnaryOp;
32702 static constexpr char const * const name{"UserDefinedUnaryOp"};
32703 static constexpr unsigned long variant{829};
32704 static constexpr bool concrete{true};
32705 using subclasses_t = mp::List<>;
32707};
32708template <> struct node_from_variant_t<829> { using type = SgUserDefinedUnaryOp; };
32709
32710// Class: UsingDeclarationStatement
32714 static constexpr size_t position{0};
32715 static constexpr char const * const name{"declaration"};
32716 static constexpr char const * const typestr{"SgDeclarationStatement*"};
32717 static constexpr bool traverse{false};
32718 static constexpr auto mbr_ptr{&SgUsingDeclarationStatement::p_declaration};
32719 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32720 using bind = Desc<SgUsingDeclarationStatement, SgDeclarationStatement* SgUsingDeclarationStatement::*, &SgUsingDeclarationStatement::p_declaration>;
32721};
32725 static constexpr size_t position{1};
32726 static constexpr char const * const name{"initializedName"};
32727 static constexpr char const * const typestr{"SgInitializedName*"};
32728 static constexpr bool traverse{false};
32729 static constexpr auto mbr_ptr{&SgUsingDeclarationStatement::p_initializedName};
32730 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32731 using bind = Desc<SgUsingDeclarationStatement, SgInitializedName* SgUsingDeclarationStatement::*, &SgUsingDeclarationStatement::p_initializedName>;
32732};
32733template <> struct describe_field_t<SgUsingDeclarationStatement,int,&SgUsingDeclarationStatement::p_name_qualification_length> {
32735 using field_type = int;
32736 static constexpr size_t position{2};
32737 static constexpr char const * const name{"name_qualification_length"};
32738 static constexpr char const * const typestr{"int"};
32739 static constexpr bool traverse{false};
32740 static constexpr auto mbr_ptr{&SgUsingDeclarationStatement::p_name_qualification_length};
32741 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32742 using bind = Desc<SgUsingDeclarationStatement, int SgUsingDeclarationStatement::*, &SgUsingDeclarationStatement::p_name_qualification_length>;
32743};
32744template <> struct describe_field_t<SgUsingDeclarationStatement,bool,&SgUsingDeclarationStatement::p_type_elaboration_required> {
32746 using field_type = bool;
32747 static constexpr size_t position{3};
32748 static constexpr char const * const name{"type_elaboration_required"};
32749 static constexpr char const * const typestr{"bool"};
32750 static constexpr bool traverse{false};
32751 static constexpr auto mbr_ptr{&SgUsingDeclarationStatement::p_type_elaboration_required};
32752 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32753 using bind = Desc<SgUsingDeclarationStatement, bool SgUsingDeclarationStatement::*, &SgUsingDeclarationStatement::p_type_elaboration_required>;
32754};
32755template <> struct describe_field_t<SgUsingDeclarationStatement,bool,&SgUsingDeclarationStatement::p_global_qualification_required> {
32757 using field_type = bool;
32758 static constexpr size_t position{4};
32759 static constexpr char const * const name{"global_qualification_required"};
32760 static constexpr char const * const typestr{"bool"};
32761 static constexpr bool traverse{false};
32762 static constexpr auto mbr_ptr{&SgUsingDeclarationStatement::p_global_qualification_required};
32763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32764 using bind = Desc<SgUsingDeclarationStatement, bool SgUsingDeclarationStatement::*, &SgUsingDeclarationStatement::p_global_qualification_required>;
32765};
32766template <> struct describe_field_t<SgUsingDeclarationStatement,bool,&SgUsingDeclarationStatement::p_is_inheriting_constructor> {
32768 using field_type = bool;
32769 static constexpr size_t position{5};
32770 static constexpr char const * const name{"is_inheriting_constructor"};
32771 static constexpr char const * const typestr{"bool"};
32772 static constexpr bool traverse{false};
32773 static constexpr auto mbr_ptr{&SgUsingDeclarationStatement::p_is_inheriting_constructor};
32774 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32775 using bind = Desc<SgUsingDeclarationStatement, bool SgUsingDeclarationStatement::*, &SgUsingDeclarationStatement::p_is_inheriting_constructor>;
32776};
32777template <> struct describe_field_t<SgUsingDeclarationStatement,SgName,&SgUsingDeclarationStatement::p_adaTypeAttribute> {
32779 using field_type = SgName;
32780 static constexpr size_t position{6};
32781 static constexpr char const * const name{"adaTypeAttribute"};
32782 static constexpr char const * const typestr{"SgName"};
32783 static constexpr bool traverse{false};
32784 static constexpr auto mbr_ptr{&SgUsingDeclarationStatement::p_adaTypeAttribute};
32785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32786 using bind = Desc<SgUsingDeclarationStatement, SgName SgUsingDeclarationStatement::*, &SgUsingDeclarationStatement::p_adaTypeAttribute>;
32787};
32797template <> struct node_from_variant_t<830> { using type = SgUsingDeclarationStatement; };
32798
32799// Class: UsingDirectiveStatement
32803 static constexpr size_t position{0};
32804 static constexpr char const * const name{"namespaceDeclaration"};
32805 static constexpr char const * const typestr{"SgNamespaceDeclarationStatement*"};
32806 static constexpr bool traverse{false};
32807 static constexpr auto mbr_ptr{&SgUsingDirectiveStatement::p_namespaceDeclaration};
32808 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32809 using bind = Desc<SgUsingDirectiveStatement, SgNamespaceDeclarationStatement* SgUsingDirectiveStatement::*, &SgUsingDirectiveStatement::p_namespaceDeclaration>;
32810};
32811template <> struct describe_field_t<SgUsingDirectiveStatement,int,&SgUsingDirectiveStatement::p_name_qualification_length> {
32813 using field_type = int;
32814 static constexpr size_t position{1};
32815 static constexpr char const * const name{"name_qualification_length"};
32816 static constexpr char const * const typestr{"int"};
32817 static constexpr bool traverse{false};
32818 static constexpr auto mbr_ptr{&SgUsingDirectiveStatement::p_name_qualification_length};
32819 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32820 using bind = Desc<SgUsingDirectiveStatement, int SgUsingDirectiveStatement::*, &SgUsingDirectiveStatement::p_name_qualification_length>;
32821};
32822template <> struct describe_field_t<SgUsingDirectiveStatement,bool,&SgUsingDirectiveStatement::p_type_elaboration_required> {
32824 using field_type = bool;
32825 static constexpr size_t position{2};
32826 static constexpr char const * const name{"type_elaboration_required"};
32827 static constexpr char const * const typestr{"bool"};
32828 static constexpr bool traverse{false};
32829 static constexpr auto mbr_ptr{&SgUsingDirectiveStatement::p_type_elaboration_required};
32830 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32831 using bind = Desc<SgUsingDirectiveStatement, bool SgUsingDirectiveStatement::*, &SgUsingDirectiveStatement::p_type_elaboration_required>;
32832};
32833template <> struct describe_field_t<SgUsingDirectiveStatement,bool,&SgUsingDirectiveStatement::p_global_qualification_required> {
32835 using field_type = bool;
32836 static constexpr size_t position{3};
32837 static constexpr char const * const name{"global_qualification_required"};
32838 static constexpr char const * const typestr{"bool"};
32839 static constexpr bool traverse{false};
32840 static constexpr auto mbr_ptr{&SgUsingDirectiveStatement::p_global_qualification_required};
32841 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32842 using bind = Desc<SgUsingDirectiveStatement, bool SgUsingDirectiveStatement::*, &SgUsingDirectiveStatement::p_global_qualification_required>;
32843};
32853template <> struct node_from_variant_t<831> { using type = SgUsingDirectiveStatement; };
32854
32855// Class: ValueExp
32856template <> struct describe_field_t<SgValueExp,SgExpression*,&SgValueExp::p_originalExpressionTree> {
32857 using parent = SgValueExp;
32858 using field_type = SgExpression*;
32859 static constexpr size_t position{0};
32860 static constexpr char const * const name{"originalExpressionTree"};
32861 static constexpr char const * const typestr{"SgExpression*"};
32862 static constexpr bool traverse{false};
32863 static constexpr auto mbr_ptr{&SgValueExp::p_originalExpressionTree};
32864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32865 using bind = Desc<SgValueExp, SgExpression* SgValueExp::*, &SgValueExp::p_originalExpressionTree>;
32866};
32876template <> struct node_from_variant_t<832> { using type = SgValueExp; };
32877
32878// Class: VarArgCopyOp
32879template <> struct describe_field_t<SgVarArgCopyOp,SgExpression*,&SgVarArgCopyOp::p_lhs_operand> {
32880 using parent = SgVarArgCopyOp;
32881 using field_type = SgExpression*;
32882 static constexpr size_t position{0};
32883 static constexpr char const * const name{"lhs_operand"};
32884 static constexpr char const * const typestr{"SgExpression*"};
32885 static constexpr bool traverse{true};
32886 static constexpr auto mbr_ptr{&SgVarArgCopyOp::p_lhs_operand};
32887 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32888 using bind = Desc<SgVarArgCopyOp, SgExpression* SgVarArgCopyOp::*, &SgVarArgCopyOp::p_lhs_operand>;
32889};
32890template <> struct describe_field_t<SgVarArgCopyOp,SgExpression*,&SgVarArgCopyOp::p_rhs_operand> {
32891 using parent = SgVarArgCopyOp;
32892 using field_type = SgExpression*;
32893 static constexpr size_t position{1};
32894 static constexpr char const * const name{"rhs_operand"};
32895 static constexpr char const * const typestr{"SgExpression*"};
32896 static constexpr bool traverse{true};
32897 static constexpr auto mbr_ptr{&SgVarArgCopyOp::p_rhs_operand};
32898 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32899 using bind = Desc<SgVarArgCopyOp, SgExpression* SgVarArgCopyOp::*, &SgVarArgCopyOp::p_rhs_operand>;
32900};
32901template <> struct describe_field_t<SgVarArgCopyOp,SgType*,&SgVarArgCopyOp::p_expression_type> {
32902 using parent = SgVarArgCopyOp;
32903 using field_type = SgType*;
32904 static constexpr size_t position{2};
32905 static constexpr char const * const name{"expression_type"};
32906 static constexpr char const * const typestr{"SgType*"};
32907 static constexpr bool traverse{false};
32908 static constexpr auto mbr_ptr{&SgVarArgCopyOp::p_expression_type};
32909 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32910 using bind = Desc<SgVarArgCopyOp, SgType* SgVarArgCopyOp::*, &SgVarArgCopyOp::p_expression_type>;
32911};
32912template <> struct describe_node_t<SgVarArgCopyOp> {
32913 using node = SgVarArgCopyOp;
32914 using base = SgExpression;
32915 static constexpr char const * const name{"VarArgCopyOp"};
32916 static constexpr unsigned long variant{833};
32917 static constexpr bool concrete{true};
32918 using subclasses_t = mp::List<>;
32920};
32921template <> struct node_from_variant_t<833> { using type = SgVarArgCopyOp; };
32922
32923// Class: VarArgEndOp
32924template <> struct describe_field_t<SgVarArgEndOp,SgExpression*,&SgVarArgEndOp::p_operand_expr> {
32925 using parent = SgVarArgEndOp;
32926 using field_type = SgExpression*;
32927 static constexpr size_t position{0};
32928 static constexpr char const * const name{"operand_expr"};
32929 static constexpr char const * const typestr{"SgExpression*"};
32930 static constexpr bool traverse{true};
32931 static constexpr auto mbr_ptr{&SgVarArgEndOp::p_operand_expr};
32932 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32933 using bind = Desc<SgVarArgEndOp, SgExpression* SgVarArgEndOp::*, &SgVarArgEndOp::p_operand_expr>;
32934};
32935template <> struct describe_field_t<SgVarArgEndOp,SgType*,&SgVarArgEndOp::p_expression_type> {
32936 using parent = SgVarArgEndOp;
32937 using field_type = SgType*;
32938 static constexpr size_t position{1};
32939 static constexpr char const * const name{"expression_type"};
32940 static constexpr char const * const typestr{"SgType*"};
32941 static constexpr bool traverse{false};
32942 static constexpr auto mbr_ptr{&SgVarArgEndOp::p_expression_type};
32943 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32944 using bind = Desc<SgVarArgEndOp, SgType* SgVarArgEndOp::*, &SgVarArgEndOp::p_expression_type>;
32945};
32946template <> struct describe_node_t<SgVarArgEndOp> {
32947 using node = SgVarArgEndOp;
32948 using base = SgExpression;
32949 static constexpr char const * const name{"VarArgEndOp"};
32950 static constexpr unsigned long variant{834};
32951 static constexpr bool concrete{true};
32952 using subclasses_t = mp::List<>;
32954};
32955template <> struct node_from_variant_t<834> { using type = SgVarArgEndOp; };
32956
32957// Class: VarArgOp
32958template <> struct describe_field_t<SgVarArgOp,SgExpression*,&SgVarArgOp::p_operand_expr> {
32959 using parent = SgVarArgOp;
32960 using field_type = SgExpression*;
32961 static constexpr size_t position{0};
32962 static constexpr char const * const name{"operand_expr"};
32963 static constexpr char const * const typestr{"SgExpression*"};
32964 static constexpr bool traverse{true};
32965 static constexpr auto mbr_ptr{&SgVarArgOp::p_operand_expr};
32966 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32967 using bind = Desc<SgVarArgOp, SgExpression* SgVarArgOp::*, &SgVarArgOp::p_operand_expr>;
32968};
32969template <> struct describe_field_t<SgVarArgOp,SgType*,&SgVarArgOp::p_expression_type> {
32970 using parent = SgVarArgOp;
32971 using field_type = SgType*;
32972 static constexpr size_t position{1};
32973 static constexpr char const * const name{"expression_type"};
32974 static constexpr char const * const typestr{"SgType*"};
32975 static constexpr bool traverse{false};
32976 static constexpr auto mbr_ptr{&SgVarArgOp::p_expression_type};
32977 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
32978 using bind = Desc<SgVarArgOp, SgType* SgVarArgOp::*, &SgVarArgOp::p_expression_type>;
32979};
32980template <> struct describe_node_t<SgVarArgOp> {
32981 using node = SgVarArgOp;
32982 using base = SgExpression;
32983 static constexpr char const * const name{"VarArgOp"};
32984 static constexpr unsigned long variant{835};
32985 static constexpr bool concrete{true};
32986 using subclasses_t = mp::List<>;
32988};
32989template <> struct node_from_variant_t<835> { using type = SgVarArgOp; };
32990
32991// Class: VarArgStartOneOperandOp
32992template <> struct describe_field_t<SgVarArgStartOneOperandOp,SgExpression*,&SgVarArgStartOneOperandOp::p_operand_expr> {
32994 using field_type = SgExpression*;
32995 static constexpr size_t position{0};
32996 static constexpr char const * const name{"operand_expr"};
32997 static constexpr char const * const typestr{"SgExpression*"};
32998 static constexpr bool traverse{true};
32999 static constexpr auto mbr_ptr{&SgVarArgStartOneOperandOp::p_operand_expr};
33000 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33001 using bind = Desc<SgVarArgStartOneOperandOp, SgExpression* SgVarArgStartOneOperandOp::*, &SgVarArgStartOneOperandOp::p_operand_expr>;
33002};
33003template <> struct describe_field_t<SgVarArgStartOneOperandOp,SgType*,&SgVarArgStartOneOperandOp::p_expression_type> {
33005 using field_type = SgType*;
33006 static constexpr size_t position{1};
33007 static constexpr char const * const name{"expression_type"};
33008 static constexpr char const * const typestr{"SgType*"};
33009 static constexpr bool traverse{false};
33010 static constexpr auto mbr_ptr{&SgVarArgStartOneOperandOp::p_expression_type};
33011 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33012 using bind = Desc<SgVarArgStartOneOperandOp, SgType* SgVarArgStartOneOperandOp::*, &SgVarArgStartOneOperandOp::p_expression_type>;
33013};
33016 using base = SgExpression;
33017 static constexpr char const * const name{"VarArgStartOneOperandOp"};
33018 static constexpr unsigned long variant{836};
33019 static constexpr bool concrete{true};
33020 using subclasses_t = mp::List<>;
33022};
33023template <> struct node_from_variant_t<836> { using type = SgVarArgStartOneOperandOp; };
33024
33025// Class: VarArgStartOp
33026template <> struct describe_field_t<SgVarArgStartOp,SgExpression*,&SgVarArgStartOp::p_lhs_operand> {
33027 using parent = SgVarArgStartOp;
33028 using field_type = SgExpression*;
33029 static constexpr size_t position{0};
33030 static constexpr char const * const name{"lhs_operand"};
33031 static constexpr char const * const typestr{"SgExpression*"};
33032 static constexpr bool traverse{true};
33033 static constexpr auto mbr_ptr{&SgVarArgStartOp::p_lhs_operand};
33034 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33035 using bind = Desc<SgVarArgStartOp, SgExpression* SgVarArgStartOp::*, &SgVarArgStartOp::p_lhs_operand>;
33036};
33037template <> struct describe_field_t<SgVarArgStartOp,SgExpression*,&SgVarArgStartOp::p_rhs_operand> {
33038 using parent = SgVarArgStartOp;
33039 using field_type = SgExpression*;
33040 static constexpr size_t position{1};
33041 static constexpr char const * const name{"rhs_operand"};
33042 static constexpr char const * const typestr{"SgExpression*"};
33043 static constexpr bool traverse{true};
33044 static constexpr auto mbr_ptr{&SgVarArgStartOp::p_rhs_operand};
33045 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33046 using bind = Desc<SgVarArgStartOp, SgExpression* SgVarArgStartOp::*, &SgVarArgStartOp::p_rhs_operand>;
33047};
33048template <> struct describe_field_t<SgVarArgStartOp,SgType*,&SgVarArgStartOp::p_expression_type> {
33049 using parent = SgVarArgStartOp;
33050 using field_type = SgType*;
33051 static constexpr size_t position{2};
33052 static constexpr char const * const name{"expression_type"};
33053 static constexpr char const * const typestr{"SgType*"};
33054 static constexpr bool traverse{false};
33055 static constexpr auto mbr_ptr{&SgVarArgStartOp::p_expression_type};
33056 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33057 using bind = Desc<SgVarArgStartOp, SgType* SgVarArgStartOp::*, &SgVarArgStartOp::p_expression_type>;
33058};
33060 using node = SgVarArgStartOp;
33061 using base = SgExpression;
33062 static constexpr char const * const name{"VarArgStartOp"};
33063 static constexpr unsigned long variant{837};
33064 static constexpr bool concrete{true};
33065 using subclasses_t = mp::List<>;
33067};
33068template <> struct node_from_variant_t<837> { using type = SgVarArgStartOp; };
33069
33070// Class: VarRefExp
33071template <> struct describe_field_t<SgVarRefExp,SgVariableSymbol*,&SgVarRefExp::p_symbol> {
33072 using parent = SgVarRefExp;
33074 static constexpr size_t position{0};
33075 static constexpr char const * const name{"symbol"};
33076 static constexpr char const * const typestr{"SgVariableSymbol*"};
33077 static constexpr bool traverse{false};
33078 static constexpr auto mbr_ptr{&SgVarRefExp::p_symbol};
33079 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33080 using bind = Desc<SgVarRefExp, SgVariableSymbol* SgVarRefExp::*, &SgVarRefExp::p_symbol>;
33081};
33082template <> struct describe_field_t<SgVarRefExp,SgExpression*,&SgVarRefExp::p_originalExpressionTree> {
33083 using parent = SgVarRefExp;
33084 using field_type = SgExpression*;
33085 static constexpr size_t position{1};
33086 static constexpr char const * const name{"originalExpressionTree"};
33087 static constexpr char const * const typestr{"SgExpression*"};
33088 static constexpr bool traverse{false};
33089 static constexpr auto mbr_ptr{&SgVarRefExp::p_originalExpressionTree};
33090 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33091 using bind = Desc<SgVarRefExp, SgExpression* SgVarRefExp::*, &SgVarRefExp::p_originalExpressionTree>;
33092};
33093template <> struct describe_field_t<SgVarRefExp,int,&SgVarRefExp::p_name_qualification_length> {
33094 using parent = SgVarRefExp;
33095 using field_type = int;
33096 static constexpr size_t position{2};
33097 static constexpr char const * const name{"name_qualification_length"};
33098 static constexpr char const * const typestr{"int"};
33099 static constexpr bool traverse{false};
33100 static constexpr auto mbr_ptr{&SgVarRefExp::p_name_qualification_length};
33101 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33102 using bind = Desc<SgVarRefExp, int SgVarRefExp::*, &SgVarRefExp::p_name_qualification_length>;
33103};
33104template <> struct describe_field_t<SgVarRefExp,bool,&SgVarRefExp::p_type_elaboration_required> {
33105 using parent = SgVarRefExp;
33106 using field_type = bool;
33107 static constexpr size_t position{3};
33108 static constexpr char const * const name{"type_elaboration_required"};
33109 static constexpr char const * const typestr{"bool"};
33110 static constexpr bool traverse{false};
33111 static constexpr auto mbr_ptr{&SgVarRefExp::p_type_elaboration_required};
33112 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33113 using bind = Desc<SgVarRefExp, bool SgVarRefExp::*, &SgVarRefExp::p_type_elaboration_required>;
33114};
33115template <> struct describe_field_t<SgVarRefExp,bool,&SgVarRefExp::p_global_qualification_required> {
33116 using parent = SgVarRefExp;
33117 using field_type = bool;
33118 static constexpr size_t position{4};
33119 static constexpr char const * const name{"global_qualification_required"};
33120 static constexpr char const * const typestr{"bool"};
33121 static constexpr bool traverse{false};
33122 static constexpr auto mbr_ptr{&SgVarRefExp::p_global_qualification_required};
33123 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33124 using bind = Desc<SgVarRefExp, bool SgVarRefExp::*, &SgVarRefExp::p_global_qualification_required>;
33125};
33135template <> struct node_from_variant_t<838> { using type = SgVarRefExp; };
33136
33137// Class: VariableDeclaration
33141 static constexpr size_t position{0};
33142 static constexpr char const * const name{"baseTypeDefiningDeclaration"};
33143 static constexpr char const * const typestr{"SgDeclarationStatement*"};
33144 static constexpr bool traverse{true};
33145 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_baseTypeDefiningDeclaration};
33146 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33147 using bind = Desc<SgVariableDeclaration, SgDeclarationStatement* SgVariableDeclaration::*, &SgVariableDeclaration::p_baseTypeDefiningDeclaration>;
33148};
33151 using field_type = SgInitializedNamePtrList;
33152 static constexpr size_t position{1};
33153 static constexpr char const * const name{"variables"};
33154 static constexpr char const * const typestr{"SgInitializedNamePtrList"};
33155 static constexpr bool traverse{true};
33156 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_variables};
33157 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33158 using bind = Desc<SgVariableDeclaration, SgInitializedNamePtrList SgVariableDeclaration::*, &SgVariableDeclaration::p_variables>;
33159};
33162 using field_type = bool;
33163 static constexpr size_t position{2};
33164 static constexpr char const * const name{"variableDeclarationContainsBaseTypeDefiningDeclaration"};
33165 static constexpr char const * const typestr{"bool"};
33166 static constexpr bool traverse{false};
33168 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33169 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_variableDeclarationContainsBaseTypeDefiningDeclaration>;
33170};
33174 static constexpr size_t position{3};
33175 static constexpr char const * const name{"specialization"};
33176 static constexpr char const * const typestr{"SgDeclarationStatement::template_specialization_enum"};
33177 static constexpr bool traverse{false};
33178 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_specialization};
33179 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33180 using bind = Desc<SgVariableDeclaration, SgDeclarationStatement::template_specialization_enum SgVariableDeclaration::*, &SgVariableDeclaration::p_specialization>;
33181};
33182template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_requiresGlobalNameQualificationOnType> {
33184 using field_type = bool;
33185 static constexpr size_t position{4};
33186 static constexpr char const * const name{"requiresGlobalNameQualificationOnType"};
33187 static constexpr char const * const typestr{"bool"};
33188 static constexpr bool traverse{false};
33189 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_requiresGlobalNameQualificationOnType};
33190 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33191 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_requiresGlobalNameQualificationOnType>;
33192};
33193template <> struct describe_field_t<SgVariableDeclaration,std::string,&SgVariableDeclaration::p_gnu_extension_section> {
33195 using field_type = std::string;
33196 static constexpr size_t position{5};
33197 static constexpr char const * const name{"gnu_extension_section"};
33198 static constexpr char const * const typestr{"std::string"};
33199 static constexpr bool traverse{false};
33200 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_gnu_extension_section};
33201 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33202 using bind = Desc<SgVariableDeclaration, std::string SgVariableDeclaration::*, &SgVariableDeclaration::p_gnu_extension_section>;
33203};
33204template <> struct describe_field_t<SgVariableDeclaration,std::string,&SgVariableDeclaration::p_gnu_extension_alias> {
33206 using field_type = std::string;
33207 static constexpr size_t position{6};
33208 static constexpr char const * const name{"gnu_extension_alias"};
33209 static constexpr char const * const typestr{"std::string"};
33210 static constexpr bool traverse{false};
33211 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_gnu_extension_alias};
33212 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33213 using bind = Desc<SgVariableDeclaration, std::string SgVariableDeclaration::*, &SgVariableDeclaration::p_gnu_extension_alias>;
33214};
33215template <> struct describe_field_t<SgVariableDeclaration,unsigned short,&SgVariableDeclaration::p_gnu_extension_initialization_priority> {
33217 using field_type = unsigned short;
33218 static constexpr size_t position{7};
33219 static constexpr char const * const name{"gnu_extension_initialization_priority"};
33220 static constexpr char const * const typestr{"unsigned short"};
33221 static constexpr bool traverse{false};
33222 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_gnu_extension_initialization_priority};
33223 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33224 using bind = Desc<SgVariableDeclaration, unsigned short SgVariableDeclaration::*, &SgVariableDeclaration::p_gnu_extension_initialization_priority>;
33225};
33226template <> struct describe_field_t<SgVariableDeclaration,SgDeclarationStatement::gnu_extension_visability_attribute_enum,&SgVariableDeclaration::p_gnu_extension_visability> {
33229 static constexpr size_t position{8};
33230 static constexpr char const * const name{"gnu_extension_visability"};
33231 static constexpr char const * const typestr{"SgDeclarationStatement::gnu_extension_visability_attribute_enum"};
33232 static constexpr bool traverse{false};
33233 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_gnu_extension_visability};
33234 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33235 using bind = Desc<SgVariableDeclaration, SgDeclarationStatement::gnu_extension_visability_attribute_enum SgVariableDeclaration::*, &SgVariableDeclaration::p_gnu_extension_visability>;
33236};
33237template <> struct describe_field_t<SgVariableDeclaration,SgVariableDeclaration::gnu_extension_declaration_attributes_enum,&SgVariableDeclaration::p_gnu_extension_declaration_attribute> {
33240 static constexpr size_t position{9};
33241 static constexpr char const * const name{"gnu_extension_declaration_attribute"};
33242 static constexpr char const * const typestr{"SgVariableDeclaration::gnu_extension_declaration_attributes_enum"};
33243 static constexpr bool traverse{false};
33244 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_gnu_extension_declaration_attribute};
33245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33246 using bind = Desc<SgVariableDeclaration, SgVariableDeclaration::gnu_extension_declaration_attributes_enum SgVariableDeclaration::*, &SgVariableDeclaration::p_gnu_extension_declaration_attribute>;
33247};
33248template <> struct describe_field_t<SgVariableDeclaration,int,&SgVariableDeclaration::p_name_qualification_length> {
33250 using field_type = int;
33251 static constexpr size_t position{10};
33252 static constexpr char const * const name{"name_qualification_length"};
33253 static constexpr char const * const typestr{"int"};
33254 static constexpr bool traverse{false};
33255 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_name_qualification_length};
33256 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33257 using bind = Desc<SgVariableDeclaration, int SgVariableDeclaration::*, &SgVariableDeclaration::p_name_qualification_length>;
33258};
33259template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_type_elaboration_required> {
33261 using field_type = bool;
33262 static constexpr size_t position{11};
33263 static constexpr char const * const name{"type_elaboration_required"};
33264 static constexpr char const * const typestr{"bool"};
33265 static constexpr bool traverse{false};
33266 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_type_elaboration_required};
33267 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33268 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_type_elaboration_required>;
33269};
33270template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_global_qualification_required> {
33272 using field_type = bool;
33273 static constexpr size_t position{12};
33274 static constexpr char const * const name{"global_qualification_required"};
33275 static constexpr char const * const typestr{"bool"};
33276 static constexpr bool traverse{false};
33277 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_global_qualification_required};
33278 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33279 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_global_qualification_required>;
33280};
33281template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_isAssociatedWithDeclarationList> {
33283 using field_type = bool;
33284 static constexpr size_t position{13};
33285 static constexpr char const * const name{"isAssociatedWithDeclarationList"};
33286 static constexpr char const * const typestr{"bool"};
33287 static constexpr bool traverse{false};
33288 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_isAssociatedWithDeclarationList};
33289 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33290 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_isAssociatedWithDeclarationList>;
33291};
33292template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_isFirstDeclarationOfDeclarationList> {
33294 using field_type = bool;
33295 static constexpr size_t position{14};
33296 static constexpr char const * const name{"isFirstDeclarationOfDeclarationList"};
33297 static constexpr char const * const typestr{"bool"};
33298 static constexpr bool traverse{false};
33299 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_isFirstDeclarationOfDeclarationList};
33300 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33301 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_isFirstDeclarationOfDeclarationList>;
33302};
33303template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_is_thread_local> {
33305 using field_type = bool;
33306 static constexpr size_t position{15};
33307 static constexpr char const * const name{"is_thread_local"};
33308 static constexpr char const * const typestr{"bool"};
33309 static constexpr bool traverse{false};
33310 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_is_thread_local};
33311 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33312 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_is_thread_local>;
33313};
33314template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_is_constexpr> {
33316 using field_type = bool;
33317 static constexpr size_t position{16};
33318 static constexpr char const * const name{"is_constexpr"};
33319 static constexpr char const * const typestr{"bool"};
33320 static constexpr bool traverse{false};
33321 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_is_constexpr};
33322 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33323 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_is_constexpr>;
33324};
33325template <> struct describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_builtFromUseOnly> {
33327 using field_type = bool;
33328 static constexpr size_t position{17};
33329 static constexpr char const * const name{"builtFromUseOnly"};
33330 static constexpr char const * const typestr{"bool"};
33331 static constexpr bool traverse{false};
33332 static constexpr auto mbr_ptr{&SgVariableDeclaration::p_builtFromUseOnly};
33333 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33334 using bind = Desc<SgVariableDeclaration, bool SgVariableDeclaration::*, &SgVariableDeclaration::p_builtFromUseOnly>;
33335};
33339 static constexpr char const * const name{"VariableDeclaration"};
33340 static constexpr unsigned long variant{839};
33341 static constexpr bool concrete{true};
33343 using fields_t = mp::List<describe_field_t<SgVariableDeclaration,SgDeclarationStatement*,&SgVariableDeclaration::p_baseTypeDefiningDeclaration>, describe_field_t<SgVariableDeclaration,SgInitializedNamePtrList,&SgVariableDeclaration::p_variables>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_variableDeclarationContainsBaseTypeDefiningDeclaration>, describe_field_t<SgVariableDeclaration,SgDeclarationStatement::template_specialization_enum,&SgVariableDeclaration::p_specialization>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_requiresGlobalNameQualificationOnType>, describe_field_t<SgVariableDeclaration,std::string,&SgVariableDeclaration::p_gnu_extension_section>, describe_field_t<SgVariableDeclaration,std::string,&SgVariableDeclaration::p_gnu_extension_alias>, describe_field_t<SgVariableDeclaration,unsigned short,&SgVariableDeclaration::p_gnu_extension_initialization_priority>, describe_field_t<SgVariableDeclaration,SgDeclarationStatement::gnu_extension_visability_attribute_enum,&SgVariableDeclaration::p_gnu_extension_visability>, describe_field_t<SgVariableDeclaration,SgVariableDeclaration::gnu_extension_declaration_attributes_enum,&SgVariableDeclaration::p_gnu_extension_declaration_attribute>, describe_field_t<SgVariableDeclaration,int,&SgVariableDeclaration::p_name_qualification_length>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_type_elaboration_required>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_global_qualification_required>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_isAssociatedWithDeclarationList>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_isFirstDeclarationOfDeclarationList>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_is_thread_local>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_is_constexpr>, describe_field_t<SgVariableDeclaration,bool,&SgVariableDeclaration::p_builtFromUseOnly>>;
33344};
33345template <> struct node_from_variant_t<839> { using type = SgVariableDeclaration; };
33346
33347// Class: VariableDefinition
33351 static constexpr size_t position{0};
33352 static constexpr char const * const name{"vardefn"};
33353 static constexpr char const * const typestr{"SgInitializedName*"};
33354 static constexpr bool traverse{true};
33355 static constexpr auto mbr_ptr{&SgVariableDefinition::p_vardefn};
33356 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33357 using bind = Desc<SgVariableDefinition, SgInitializedName* SgVariableDefinition::*, &SgVariableDefinition::p_vardefn>;
33358};
33361 using field_type = SgExpression*;
33362 static constexpr size_t position{1};
33363 static constexpr char const * const name{"bitfield"};
33364 static constexpr char const * const typestr{"SgExpression*"};
33365 static constexpr bool traverse{true};
33366 static constexpr auto mbr_ptr{&SgVariableDefinition::p_bitfield};
33367 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33368 using bind = Desc<SgVariableDefinition, SgExpression* SgVariableDefinition::*, &SgVariableDefinition::p_bitfield>;
33369};
33371 using node = SgVariableDefinition;
33373 static constexpr char const * const name{"VariableDefinition"};
33374 static constexpr unsigned long variant{840};
33375 static constexpr bool concrete{true};
33376 using subclasses_t = mp::List<>;
33378};
33379template <> struct node_from_variant_t<840> { using type = SgVariableDefinition; };
33380
33381// Class: VariableSymbol
33382template <> struct describe_field_t<SgVariableSymbol,SgInitializedName*,&SgVariableSymbol::p_declaration> {
33383 using parent = SgVariableSymbol;
33385 static constexpr size_t position{0};
33386 static constexpr char const * const name{"declaration"};
33387 static constexpr char const * const typestr{"SgInitializedName*"};
33388 static constexpr bool traverse{false};
33389 static constexpr auto mbr_ptr{&SgVariableSymbol::p_declaration};
33390 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33391 using bind = Desc<SgVariableSymbol, SgInitializedName* SgVariableSymbol::*, &SgVariableSymbol::p_declaration>;
33392};
33394 using node = SgVariableSymbol;
33395 using base = SgSymbol;
33396 static constexpr char const * const name{"VariableSymbol"};
33397 static constexpr unsigned long variant{841};
33398 static constexpr bool concrete{true};
33401};
33402template <> struct node_from_variant_t<841> { using type = SgVariableSymbol; };
33403
33404// Class: VariantExpression
33406 using node = SgVariantExpression;
33407 using base = SgExpression;
33408 static constexpr char const * const name{"VariantExpression"};
33409 static constexpr unsigned long variant{842};
33410 static constexpr bool concrete{true};
33411 using subclasses_t = mp::List<>;
33412 using fields_t = mp::List<>;
33413};
33414template <> struct node_from_variant_t<842> { using type = SgVariantExpression; };
33415
33416// Class: VariantStatement
33418 using node = SgVariantStatement;
33419 using base = SgStatement;
33420 static constexpr char const * const name{"VariantStatement"};
33421 static constexpr unsigned long variant{843};
33422 static constexpr bool concrete{true};
33423 using subclasses_t = mp::List<>;
33424 using fields_t = mp::List<>;
33425};
33426template <> struct node_from_variant_t<843> { using type = SgVariantStatement; };
33427
33428// Class: VoidVal
33429template <> struct describe_node_t<SgVoidVal> {
33430 using node = SgVoidVal;
33431 using base = SgValueExp;
33432 static constexpr char const * const name{"VoidVal"};
33433 static constexpr unsigned long variant{844};
33434 static constexpr bool concrete{true};
33435 using subclasses_t = mp::List<>;
33436 using fields_t = mp::List<>;
33437};
33438template <> struct node_from_variant_t<844> { using type = SgVoidVal; };
33439
33440// Class: WaitStatement
33442 using node = SgWaitStatement;
33443 using base = SgIOStatement;
33444 static constexpr char const * const name{"WaitStatement"};
33445 static constexpr unsigned long variant{845};
33446 static constexpr bool concrete{true};
33447 using subclasses_t = mp::List<>;
33448 using fields_t = mp::List<>;
33449};
33450template <> struct node_from_variant_t<845> { using type = SgWaitStatement; };
33451
33452// Class: WarningDirectiveStatement
33456 static constexpr char const * const name{"WarningDirectiveStatement"};
33457 static constexpr unsigned long variant{846};
33458 static constexpr bool concrete{true};
33459 using subclasses_t = mp::List<>;
33460 using fields_t = mp::List<>;
33461};
33462template <> struct node_from_variant_t<846> { using type = SgWarningDirectiveStatement; };
33463
33464// Class: WithStatement
33465template <> struct describe_field_t<SgWithStatement,SgExpression*,&SgWithStatement::p_expression> {
33466 using parent = SgWithStatement;
33467 using field_type = SgExpression*;
33468 static constexpr size_t position{0};
33469 static constexpr char const * const name{"expression"};
33470 static constexpr char const * const typestr{"SgExpression*"};
33471 static constexpr bool traverse{true};
33472 static constexpr auto mbr_ptr{&SgWithStatement::p_expression};
33473 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33474 using bind = Desc<SgWithStatement, SgExpression* SgWithStatement::*, &SgWithStatement::p_expression>;
33475};
33476template <> struct describe_field_t<SgWithStatement,SgStatement*,&SgWithStatement::p_body> {
33477 using parent = SgWithStatement;
33478 using field_type = SgStatement*;
33479 static constexpr size_t position{1};
33480 static constexpr char const * const name{"body"};
33481 static constexpr char const * const typestr{"SgStatement*"};
33482 static constexpr bool traverse{true};
33483 static constexpr auto mbr_ptr{&SgWithStatement::p_body};
33484 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33485 using bind = Desc<SgWithStatement, SgStatement* SgWithStatement::*, &SgWithStatement::p_body>;
33486};
33488 using node = SgWithStatement;
33489 using base = SgStatement;
33490 static constexpr char const * const name{"WithStatement"};
33491 static constexpr unsigned long variant{847};
33492 static constexpr bool concrete{true};
33493 using subclasses_t = mp::List<>;
33495};
33496template <> struct node_from_variant_t<847> { using type = SgWithStatement; };
33497
33498// Class: WcharVal
33499template <> struct describe_field_t<SgWcharVal,unsigned long,&SgWcharVal::p_valueUL> {
33500 using parent = SgWcharVal;
33501 using field_type = unsigned long;
33502 static constexpr size_t position{0};
33503 static constexpr char const * const name{"valueUL"};
33504 static constexpr char const * const typestr{"unsigned long"};
33505 static constexpr bool traverse{false};
33506 static constexpr auto mbr_ptr{&SgWcharVal::p_valueUL};
33507 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33508 using bind = Desc<SgWcharVal, unsigned long SgWcharVal::*, &SgWcharVal::p_valueUL>;
33509};
33510template <> struct describe_field_t<SgWcharVal,std::string,&SgWcharVal::p_valueString> {
33511 using parent = SgWcharVal;
33512 using field_type = std::string;
33513 static constexpr size_t position{1};
33514 static constexpr char const * const name{"valueString"};
33515 static constexpr char const * const typestr{"std::string"};
33516 static constexpr bool traverse{false};
33517 static constexpr auto mbr_ptr{&SgWcharVal::p_valueString};
33518 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33519 using bind = Desc<SgWcharVal, std::string SgWcharVal::*, &SgWcharVal::p_valueString>;
33520};
33521template <> struct describe_node_t<SgWcharVal> {
33522 using node = SgWcharVal;
33523 using base = SgValueExp;
33524 static constexpr char const * const name{"WcharVal"};
33525 static constexpr unsigned long variant{848};
33526 static constexpr bool concrete{true};
33527 using subclasses_t = mp::List<>;
33529};
33530template <> struct node_from_variant_t<848> { using type = SgWcharVal; };
33531
33532// Class: WhereStatement
33533template <> struct describe_field_t<SgWhereStatement,SgExpression*,&SgWhereStatement::p_condition> {
33534 using parent = SgWhereStatement;
33535 using field_type = SgExpression*;
33536 static constexpr size_t position{0};
33537 static constexpr char const * const name{"condition"};
33538 static constexpr char const * const typestr{"SgExpression*"};
33539 static constexpr bool traverse{true};
33540 static constexpr auto mbr_ptr{&SgWhereStatement::p_condition};
33541 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33542 using bind = Desc<SgWhereStatement, SgExpression* SgWhereStatement::*, &SgWhereStatement::p_condition>;
33543};
33544template <> struct describe_field_t<SgWhereStatement,SgBasicBlock*,&SgWhereStatement::p_body> {
33545 using parent = SgWhereStatement;
33546 using field_type = SgBasicBlock*;
33547 static constexpr size_t position{1};
33548 static constexpr char const * const name{"body"};
33549 static constexpr char const * const typestr{"SgBasicBlock*"};
33550 static constexpr bool traverse{true};
33551 static constexpr auto mbr_ptr{&SgWhereStatement::p_body};
33552 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33553 using bind = Desc<SgWhereStatement, SgBasicBlock* SgWhereStatement::*, &SgWhereStatement::p_body>;
33554};
33555template <> struct describe_field_t<SgWhereStatement,SgElseWhereStatement*,&SgWhereStatement::p_elsewhere> {
33556 using parent = SgWhereStatement;
33558 static constexpr size_t position{2};
33559 static constexpr char const * const name{"elsewhere"};
33560 static constexpr char const * const typestr{"SgElseWhereStatement*"};
33561 static constexpr bool traverse{true};
33562 static constexpr auto mbr_ptr{&SgWhereStatement::p_elsewhere};
33563 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33564 using bind = Desc<SgWhereStatement, SgElseWhereStatement* SgWhereStatement::*, &SgWhereStatement::p_elsewhere>;
33565};
33566template <> struct describe_field_t<SgWhereStatement,SgLabelRefExp*,&SgWhereStatement::p_end_numeric_label> {
33567 using parent = SgWhereStatement;
33568 using field_type = SgLabelRefExp*;
33569 static constexpr size_t position{3};
33570 static constexpr char const * const name{"end_numeric_label"};
33571 static constexpr char const * const typestr{"SgLabelRefExp*"};
33572 static constexpr bool traverse{false};
33573 static constexpr auto mbr_ptr{&SgWhereStatement::p_end_numeric_label};
33574 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33575 using bind = Desc<SgWhereStatement, SgLabelRefExp* SgWhereStatement::*, &SgWhereStatement::p_end_numeric_label>;
33576};
33577template <> struct describe_field_t<SgWhereStatement,std::string,&SgWhereStatement::p_string_label> {
33578 using parent = SgWhereStatement;
33579 using field_type = std::string;
33580 static constexpr size_t position{4};
33581 static constexpr char const * const name{"string_label"};
33582 static constexpr char const * const typestr{"std::string"};
33583 static constexpr bool traverse{false};
33584 static constexpr auto mbr_ptr{&SgWhereStatement::p_string_label};
33585 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33586 using bind = Desc<SgWhereStatement, std::string SgWhereStatement::*, &SgWhereStatement::p_string_label>;
33587};
33588template <> struct describe_field_t<SgWhereStatement,bool,&SgWhereStatement::p_has_end_statement> {
33589 using parent = SgWhereStatement;
33590 using field_type = bool;
33591 static constexpr size_t position{5};
33592 static constexpr char const * const name{"has_end_statement"};
33593 static constexpr char const * const typestr{"bool"};
33594 static constexpr bool traverse{false};
33595 static constexpr auto mbr_ptr{&SgWhereStatement::p_has_end_statement};
33596 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33597 using bind = Desc<SgWhereStatement, bool SgWhereStatement::*, &SgWhereStatement::p_has_end_statement>;
33598};
33608template <> struct node_from_variant_t<849> { using type = SgWhereStatement; };
33609
33610// Class: WhileStmt
33612 using parent = SgWhileStmt;
33613 using field_type = SgStatement*;
33614 static constexpr size_t position{0};
33615 static constexpr char const * const name{"condition"};
33616 static constexpr char const * const typestr{"SgStatement*"};
33617 static constexpr bool traverse{true};
33618 static constexpr auto mbr_ptr{&SgWhileStmt::p_condition};
33619 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33620 using bind = Desc<SgWhileStmt, SgStatement* SgWhileStmt::*, &SgWhileStmt::p_condition>;
33621};
33623 using parent = SgWhileStmt;
33624 using field_type = SgStatement*;
33625 static constexpr size_t position{1};
33626 static constexpr char const * const name{"body"};
33627 static constexpr char const * const typestr{"SgStatement*"};
33628 static constexpr bool traverse{true};
33629 static constexpr auto mbr_ptr{&SgWhileStmt::p_body};
33630 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33631 using bind = Desc<SgWhileStmt, SgStatement* SgWhileStmt::*, &SgWhileStmt::p_body>;
33632};
33634 using parent = SgWhileStmt;
33635 using field_type = SgStatement*;
33636 static constexpr size_t position{2};
33637 static constexpr char const * const name{"else_body"};
33638 static constexpr char const * const typestr{"SgStatement*"};
33639 static constexpr bool traverse{true};
33640 static constexpr auto mbr_ptr{&SgWhileStmt::p_else_body};
33641 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33642 using bind = Desc<SgWhileStmt, SgStatement* SgWhileStmt::*, &SgWhileStmt::p_else_body>;
33643};
33644template <> struct describe_field_t<SgWhileStmt,SgLabelRefExp*,&SgWhileStmt::p_end_numeric_label> {
33645 using parent = SgWhileStmt;
33646 using field_type = SgLabelRefExp*;
33647 static constexpr size_t position{3};
33648 static constexpr char const * const name{"end_numeric_label"};
33649 static constexpr char const * const typestr{"SgLabelRefExp*"};
33650 static constexpr bool traverse{false};
33651 static constexpr auto mbr_ptr{&SgWhileStmt::p_end_numeric_label};
33652 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33653 using bind = Desc<SgWhileStmt, SgLabelRefExp* SgWhileStmt::*, &SgWhileStmt::p_end_numeric_label>;
33654};
33655template <> struct describe_field_t<SgWhileStmt,std::string,&SgWhileStmt::p_string_label> {
33656 using parent = SgWhileStmt;
33657 using field_type = std::string;
33658 static constexpr size_t position{4};
33659 static constexpr char const * const name{"string_label"};
33660 static constexpr char const * const typestr{"std::string"};
33661 static constexpr bool traverse{false};
33662 static constexpr auto mbr_ptr{&SgWhileStmt::p_string_label};
33663 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33664 using bind = Desc<SgWhileStmt, std::string SgWhileStmt::*, &SgWhileStmt::p_string_label>;
33665};
33666template <> struct describe_field_t<SgWhileStmt,bool,&SgWhileStmt::p_has_end_statement> {
33667 using parent = SgWhileStmt;
33668 using field_type = bool;
33669 static constexpr size_t position{5};
33670 static constexpr char const * const name{"has_end_statement"};
33671 static constexpr char const * const typestr{"bool"};
33672 static constexpr bool traverse{false};
33673 static constexpr auto mbr_ptr{&SgWhileStmt::p_has_end_statement};
33674 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33675 using bind = Desc<SgWhileStmt, bool SgWhileStmt::*, &SgWhileStmt::p_has_end_statement>;
33676};
33686template <> struct node_from_variant_t<850> { using type = SgWhileStmt; };
33687
33688// Class: WriteStatement
33689template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_format> {
33690 using parent = SgWriteStatement;
33691 using field_type = SgExpression*;
33692 static constexpr size_t position{0};
33693 static constexpr char const * const name{"format"};
33694 static constexpr char const * const typestr{"SgExpression*"};
33695 static constexpr bool traverse{true};
33696 static constexpr auto mbr_ptr{&SgWriteStatement::p_format};
33697 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33698 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_format>;
33699};
33700template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_namelist> {
33701 using parent = SgWriteStatement;
33702 using field_type = SgExpression*;
33703 static constexpr size_t position{1};
33704 static constexpr char const * const name{"namelist"};
33705 static constexpr char const * const typestr{"SgExpression*"};
33706 static constexpr bool traverse{true};
33707 static constexpr auto mbr_ptr{&SgWriteStatement::p_namelist};
33708 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33709 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_namelist>;
33710};
33711template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_advance> {
33712 using parent = SgWriteStatement;
33713 using field_type = SgExpression*;
33714 static constexpr size_t position{2};
33715 static constexpr char const * const name{"advance"};
33716 static constexpr char const * const typestr{"SgExpression*"};
33717 static constexpr bool traverse{true};
33718 static constexpr auto mbr_ptr{&SgWriteStatement::p_advance};
33719 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33720 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_advance>;
33721};
33722template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_asynchronous> {
33723 using parent = SgWriteStatement;
33724 using field_type = SgExpression*;
33725 static constexpr size_t position{3};
33726 static constexpr char const * const name{"asynchronous"};
33727 static constexpr char const * const typestr{"SgExpression*"};
33728 static constexpr bool traverse{true};
33729 static constexpr auto mbr_ptr{&SgWriteStatement::p_asynchronous};
33730 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33731 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_asynchronous>;
33732};
33733template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_blank> {
33734 using parent = SgWriteStatement;
33735 using field_type = SgExpression*;
33736 static constexpr size_t position{4};
33737 static constexpr char const * const name{"blank"};
33738 static constexpr char const * const typestr{"SgExpression*"};
33739 static constexpr bool traverse{true};
33740 static constexpr auto mbr_ptr{&SgWriteStatement::p_blank};
33741 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33742 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_blank>;
33743};
33744template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_decimal> {
33745 using parent = SgWriteStatement;
33746 using field_type = SgExpression*;
33747 static constexpr size_t position{5};
33748 static constexpr char const * const name{"decimal"};
33749 static constexpr char const * const typestr{"SgExpression*"};
33750 static constexpr bool traverse{true};
33751 static constexpr auto mbr_ptr{&SgWriteStatement::p_decimal};
33752 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33753 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_decimal>;
33754};
33755template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_delim> {
33756 using parent = SgWriteStatement;
33757 using field_type = SgExpression*;
33758 static constexpr size_t position{6};
33759 static constexpr char const * const name{"delim"};
33760 static constexpr char const * const typestr{"SgExpression*"};
33761 static constexpr bool traverse{true};
33762 static constexpr auto mbr_ptr{&SgWriteStatement::p_delim};
33763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33764 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_delim>;
33765};
33766template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_end> {
33767 using parent = SgWriteStatement;
33768 using field_type = SgExpression*;
33769 static constexpr size_t position{7};
33770 static constexpr char const * const name{"end"};
33771 static constexpr char const * const typestr{"SgExpression*"};
33772 static constexpr bool traverse{true};
33773 static constexpr auto mbr_ptr{&SgWriteStatement::p_end};
33774 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33775 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_end>;
33776};
33777template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_eor> {
33778 using parent = SgWriteStatement;
33779 using field_type = SgExpression*;
33780 static constexpr size_t position{8};
33781 static constexpr char const * const name{"eor"};
33782 static constexpr char const * const typestr{"SgExpression*"};
33783 static constexpr bool traverse{true};
33784 static constexpr auto mbr_ptr{&SgWriteStatement::p_eor};
33785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33786 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_eor>;
33787};
33788template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_id> {
33789 using parent = SgWriteStatement;
33790 using field_type = SgExpression*;
33791 static constexpr size_t position{9};
33792 static constexpr char const * const name{"id"};
33793 static constexpr char const * const typestr{"SgExpression*"};
33794 static constexpr bool traverse{true};
33795 static constexpr auto mbr_ptr{&SgWriteStatement::p_id};
33796 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33797 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_id>;
33798};
33799template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_pad> {
33800 using parent = SgWriteStatement;
33801 using field_type = SgExpression*;
33802 static constexpr size_t position{10};
33803 static constexpr char const * const name{"pad"};
33804 static constexpr char const * const typestr{"SgExpression*"};
33805 static constexpr bool traverse{true};
33806 static constexpr auto mbr_ptr{&SgWriteStatement::p_pad};
33807 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33808 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_pad>;
33809};
33810template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_pos> {
33811 using parent = SgWriteStatement;
33812 using field_type = SgExpression*;
33813 static constexpr size_t position{11};
33814 static constexpr char const * const name{"pos"};
33815 static constexpr char const * const typestr{"SgExpression*"};
33816 static constexpr bool traverse{true};
33817 static constexpr auto mbr_ptr{&SgWriteStatement::p_pos};
33818 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33819 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_pos>;
33820};
33821template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_rec> {
33822 using parent = SgWriteStatement;
33823 using field_type = SgExpression*;
33824 static constexpr size_t position{12};
33825 static constexpr char const * const name{"rec"};
33826 static constexpr char const * const typestr{"SgExpression*"};
33827 static constexpr bool traverse{true};
33828 static constexpr auto mbr_ptr{&SgWriteStatement::p_rec};
33829 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33830 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_rec>;
33831};
33832template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_round> {
33833 using parent = SgWriteStatement;
33834 using field_type = SgExpression*;
33835 static constexpr size_t position{13};
33836 static constexpr char const * const name{"round"};
33837 static constexpr char const * const typestr{"SgExpression*"};
33838 static constexpr bool traverse{true};
33839 static constexpr auto mbr_ptr{&SgWriteStatement::p_round};
33840 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33841 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_round>;
33842};
33843template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_sign> {
33844 using parent = SgWriteStatement;
33845 using field_type = SgExpression*;
33846 static constexpr size_t position{14};
33847 static constexpr char const * const name{"sign"};
33848 static constexpr char const * const typestr{"SgExpression*"};
33849 static constexpr bool traverse{true};
33850 static constexpr auto mbr_ptr{&SgWriteStatement::p_sign};
33851 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33852 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_sign>;
33853};
33854template <> struct describe_field_t<SgWriteStatement,SgExpression*,&SgWriteStatement::p_size> {
33855 using parent = SgWriteStatement;
33856 using field_type = SgExpression*;
33857 static constexpr size_t position{15};
33858 static constexpr char const * const name{"size"};
33859 static constexpr char const * const typestr{"SgExpression*"};
33860 static constexpr bool traverse{true};
33861 static constexpr auto mbr_ptr{&SgWriteStatement::p_size};
33862 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33863 using bind = Desc<SgWriteStatement, SgExpression* SgWriteStatement::*, &SgWriteStatement::p_size>;
33864};
33866 using node = SgWriteStatement;
33867 using base = SgIOStatement;
33868 static constexpr char const * const name{"WriteStatement"};
33869 static constexpr unsigned long variant{851};
33870 static constexpr bool concrete{true};
33871 using subclasses_t = mp::List<>;
33873};
33874template <> struct node_from_variant_t<851> { using type = SgWriteStatement; };
33875
33876// Class: XorAssignOp
33877template <> struct describe_node_t<SgXorAssignOp> {
33878 using node = SgXorAssignOp;
33879 using base = SgCompoundAssignOp;
33880 static constexpr char const * const name{"XorAssignOp"};
33881 static constexpr unsigned long variant{852};
33882 static constexpr bool concrete{true};
33883 using subclasses_t = mp::List<>;
33884 using fields_t = mp::List<>;
33885};
33886template <> struct node_from_variant_t<852> { using type = SgXorAssignOp; };
33887
33888// Class: YieldExpression
33889template <> struct describe_field_t<SgYieldExpression,SgExpression*,&SgYieldExpression::p_value> {
33890 using parent = SgYieldExpression;
33891 using field_type = SgExpression*;
33892 static constexpr size_t position{0};
33893 static constexpr char const * const name{"value"};
33894 static constexpr char const * const typestr{"SgExpression*"};
33895 static constexpr bool traverse{true};
33896 static constexpr auto mbr_ptr{&SgYieldExpression::p_value};
33897 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33898 using bind = Desc<SgYieldExpression, SgExpression* SgYieldExpression::*, &SgYieldExpression::p_value>;
33899};
33901 using node = SgYieldExpression;
33902 using base = SgExpression;
33903 static constexpr char const * const name{"YieldExpression"};
33904 static constexpr unsigned long variant{853};
33905 static constexpr bool concrete{true};
33906 using subclasses_t = mp::List<>;
33908};
33909template <> struct node_from_variant_t<853> { using type = SgYieldExpression; };
33910
33911// Class: _File_Info
33913 using parent = Sg_File_Info;
33914 using field_type = int;
33915 static constexpr size_t position{0};
33916 static constexpr char const * const name{"file_id"};
33917 static constexpr char const * const typestr{"int"};
33918 static constexpr bool traverse{false};
33919 static constexpr auto mbr_ptr{&Sg_File_Info::p_file_id};
33920 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33921 using bind = Desc<Sg_File_Info, int Sg_File_Info::*, &Sg_File_Info::p_file_id>;
33922};
33924 using parent = Sg_File_Info;
33925 using field_type = int;
33926 static constexpr size_t position{1};
33927 static constexpr char const * const name{"line"};
33928 static constexpr char const * const typestr{"int"};
33929 static constexpr bool traverse{false};
33930 static constexpr auto mbr_ptr{&Sg_File_Info::p_line};
33931 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33932 using bind = Desc<Sg_File_Info, int Sg_File_Info::*, &Sg_File_Info::p_line>;
33933};
33935 using parent = Sg_File_Info;
33936 using field_type = int;
33937 static constexpr size_t position{2};
33938 static constexpr char const * const name{"col"};
33939 static constexpr char const * const typestr{"int"};
33940 static constexpr bool traverse{false};
33941 static constexpr auto mbr_ptr{&Sg_File_Info::p_col};
33942 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33943 using bind = Desc<Sg_File_Info, int Sg_File_Info::*, &Sg_File_Info::p_col>;
33944};
33946 using parent = Sg_File_Info;
33947 using field_type = unsigned int;
33948 static constexpr size_t position{3};
33949 static constexpr char const * const name{"classificationBitField"};
33950 static constexpr char const * const typestr{"unsigned int"};
33951 static constexpr bool traverse{false};
33952 static constexpr auto mbr_ptr{&Sg_File_Info::p_classificationBitField};
33953 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33954 using bind = Desc<Sg_File_Info, unsigned int Sg_File_Info::*, &Sg_File_Info::p_classificationBitField>;
33955};
33956template <> struct describe_field_t<Sg_File_Info,int,&Sg_File_Info::p_physical_file_id> {
33957 using parent = Sg_File_Info;
33958 using field_type = int;
33959 static constexpr size_t position{4};
33960 static constexpr char const * const name{"physical_file_id"};
33961 static constexpr char const * const typestr{"int"};
33962 static constexpr bool traverse{false};
33963 static constexpr auto mbr_ptr{&Sg_File_Info::p_physical_file_id};
33964 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33965 using bind = Desc<Sg_File_Info, int Sg_File_Info::*, &Sg_File_Info::p_physical_file_id>;
33966};
33967template <> struct describe_field_t<Sg_File_Info,int,&Sg_File_Info::p_physical_line> {
33968 using parent = Sg_File_Info;
33969 using field_type = int;
33970 static constexpr size_t position{5};
33971 static constexpr char const * const name{"physical_line"};
33972 static constexpr char const * const typestr{"int"};
33973 static constexpr bool traverse{false};
33974 static constexpr auto mbr_ptr{&Sg_File_Info::p_physical_line};
33975 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33976 using bind = Desc<Sg_File_Info, int Sg_File_Info::*, &Sg_File_Info::p_physical_line>;
33977};
33978template <> struct describe_field_t<Sg_File_Info,unsigned int,&Sg_File_Info::p_source_sequence_number> {
33979 using parent = Sg_File_Info;
33980 using field_type = unsigned int;
33981 static constexpr size_t position{6};
33982 static constexpr char const * const name{"source_sequence_number"};
33983 static constexpr char const * const typestr{"unsigned int"};
33984 static constexpr bool traverse{false};
33985 static constexpr auto mbr_ptr{&Sg_File_Info::p_source_sequence_number};
33986 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33987 using bind = Desc<Sg_File_Info, unsigned int Sg_File_Info::*, &Sg_File_Info::p_source_sequence_number>;
33988};
33990 using parent = Sg_File_Info;
33991 using field_type = SgFileIdList;
33992 static constexpr size_t position{7};
33993 static constexpr char const * const name{"fileIDsToUnparse"};
33994 static constexpr char const * const typestr{"SgFileIdList"};
33995 static constexpr bool traverse{false};
33996 static constexpr auto mbr_ptr{&Sg_File_Info::p_fileIDsToUnparse};
33997 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
33998 using bind = Desc<Sg_File_Info, SgFileIdList Sg_File_Info::*, &Sg_File_Info::p_fileIDsToUnparse>;
33999};
34000template <> struct describe_field_t<Sg_File_Info,SgFileLineNumberList,&Sg_File_Info::p_fileLineNumbersToUnparse> {
34001 using parent = Sg_File_Info;
34002 using field_type = SgFileLineNumberList;
34003 static constexpr size_t position{8};
34004 static constexpr char const * const name{"fileLineNumbersToUnparse"};
34005 static constexpr char const * const typestr{"SgFileLineNumberList"};
34006 static constexpr bool traverse{false};
34007 static constexpr auto mbr_ptr{&Sg_File_Info::p_fileLineNumbersToUnparse};
34008 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34009 using bind = Desc<Sg_File_Info, SgFileLineNumberList Sg_File_Info::*, &Sg_File_Info::p_fileLineNumbersToUnparse>;
34010};
34020template <> struct node_from_variant_t<854> { using type = Sg_File_Info; };
34021
34022// Class: TypeCAFTeam
34023template <> struct describe_node_t<SgTypeCAFTeam> {
34024 using node = SgTypeCAFTeam;
34025 using base = SgType;
34026 static constexpr char const * const name{"TypeCAFTeam"};
34027 static constexpr unsigned long variant{855};
34028 static constexpr bool concrete{true};
34029 using subclasses_t = mp::List<>;
34030 using fields_t = mp::List<>;
34031};
34032template <> struct node_from_variant_t<855> { using type = SgTypeCAFTeam; };
34033
34034// Class: CAFWithTeamStatement
34035template <> struct describe_field_t<SgCAFWithTeamStatement,SgVarRefExp*,&SgCAFWithTeamStatement::p_teamId> {
34037 using field_type = SgVarRefExp*;
34038 static constexpr size_t position{0};
34039 static constexpr char const * const name{"teamId"};
34040 static constexpr char const * const typestr{"SgVarRefExp*"};
34041 static constexpr bool traverse{false};
34042 static constexpr auto mbr_ptr{&SgCAFWithTeamStatement::p_teamId};
34043 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34044 using bind = Desc<SgCAFWithTeamStatement, SgVarRefExp* SgCAFWithTeamStatement::*, &SgCAFWithTeamStatement::p_teamId>;
34045};
34046template <> struct describe_field_t<SgCAFWithTeamStatement,SgBasicBlock*,&SgCAFWithTeamStatement::p_body> {
34048 using field_type = SgBasicBlock*;
34049 static constexpr size_t position{1};
34050 static constexpr char const * const name{"body"};
34051 static constexpr char const * const typestr{"SgBasicBlock*"};
34052 static constexpr bool traverse{true};
34053 static constexpr auto mbr_ptr{&SgCAFWithTeamStatement::p_body};
34054 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34055 using bind = Desc<SgCAFWithTeamStatement, SgBasicBlock* SgCAFWithTeamStatement::*, &SgCAFWithTeamStatement::p_body>;
34056};
34057template <> struct describe_field_t<SgCAFWithTeamStatement,bool,&SgCAFWithTeamStatement::p_endHasTeamId> {
34059 using field_type = bool;
34060 static constexpr size_t position{2};
34061 static constexpr char const * const name{"endHasTeamId"};
34062 static constexpr char const * const typestr{"bool"};
34063 static constexpr bool traverse{false};
34064 static constexpr auto mbr_ptr{&SgCAFWithTeamStatement::p_endHasTeamId};
34065 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34066 using bind = Desc<SgCAFWithTeamStatement, bool SgCAFWithTeamStatement::*, &SgCAFWithTeamStatement::p_endHasTeamId>;
34067};
34070 using base = SgScopeStatement;
34071 static constexpr char const * const name{"CAFWithTeamStatement"};
34072 static constexpr unsigned long variant{856};
34073 static constexpr bool concrete{true};
34074 using subclasses_t = mp::List<>;
34076};
34077template <> struct node_from_variant_t<856> { using type = SgCAFWithTeamStatement; };
34078
34079// Class: CAFCoExpression
34080template <> struct describe_field_t<SgCAFCoExpression,SgVarRefExp*,&SgCAFCoExpression::p_teamId> {
34081 using parent = SgCAFCoExpression;
34082 using field_type = SgVarRefExp*;
34083 static constexpr size_t position{0};
34084 static constexpr char const * const name{"teamId"};
34085 static constexpr char const * const typestr{"SgVarRefExp*"};
34086 static constexpr bool traverse{false};
34087 static constexpr auto mbr_ptr{&SgCAFCoExpression::p_teamId};
34088 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34089 using bind = Desc<SgCAFCoExpression, SgVarRefExp* SgCAFCoExpression::*, &SgCAFCoExpression::p_teamId>;
34090};
34091template <> struct describe_field_t<SgCAFCoExpression,SgExpression*,&SgCAFCoExpression::p_teamRank> {
34092 using parent = SgCAFCoExpression;
34093 using field_type = SgExpression*;
34094 static constexpr size_t position{1};
34095 static constexpr char const * const name{"teamRank"};
34096 static constexpr char const * const typestr{"SgExpression*"};
34097 static constexpr bool traverse{false};
34098 static constexpr auto mbr_ptr{&SgCAFCoExpression::p_teamRank};
34099 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34100 using bind = Desc<SgCAFCoExpression, SgExpression* SgCAFCoExpression::*, &SgCAFCoExpression::p_teamRank>;
34101};
34102template <> struct describe_field_t<SgCAFCoExpression,SgExpression*,&SgCAFCoExpression::p_referData> {
34103 using parent = SgCAFCoExpression;
34104 using field_type = SgExpression*;
34105 static constexpr size_t position{2};
34106 static constexpr char const * const name{"referData"};
34107 static constexpr char const * const typestr{"SgExpression*"};
34108 static constexpr bool traverse{true};
34109 static constexpr auto mbr_ptr{&SgCAFCoExpression::p_referData};
34110 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34111 using bind = Desc<SgCAFCoExpression, SgExpression* SgCAFCoExpression::*, &SgCAFCoExpression::p_referData>;
34112};
34114 using node = SgCAFCoExpression;
34115 using base = SgExpression;
34116 static constexpr char const * const name{"CAFCoExpression"};
34117 static constexpr unsigned long variant{857};
34118 static constexpr bool concrete{true};
34119 using subclasses_t = mp::List<>;
34121};
34122template <> struct node_from_variant_t<857> { using type = SgCAFCoExpression; };
34123
34124// Class: CallExpression
34126 using parent = SgCallExpression;
34127 using field_type = SgExpression*;
34128 static constexpr size_t position{0};
34129 static constexpr char const * const name{"function"};
34130 static constexpr char const * const typestr{"SgExpression*"};
34131 static constexpr bool traverse{true};
34132 static constexpr auto mbr_ptr{&SgCallExpression::p_function};
34133 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34134 using bind = Desc<SgCallExpression, SgExpression* SgCallExpression::*, &SgCallExpression::p_function>;
34135};
34137 using parent = SgCallExpression;
34138 using field_type = SgExprListExp*;
34139 static constexpr size_t position{1};
34140 static constexpr char const * const name{"args"};
34141 static constexpr char const * const typestr{"SgExprListExp*"};
34142 static constexpr bool traverse{true};
34143 static constexpr auto mbr_ptr{&SgCallExpression::p_args};
34144 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34145 using bind = Desc<SgCallExpression, SgExprListExp* SgCallExpression::*, &SgCallExpression::p_args>;
34146};
34148 using parent = SgCallExpression;
34149 using field_type = SgType*;
34150 static constexpr size_t position{2};
34151 static constexpr char const * const name{"expression_type"};
34152 static constexpr char const * const typestr{"SgType*"};
34153 static constexpr bool traverse{false};
34154 static constexpr auto mbr_ptr{&SgCallExpression::p_expression_type};
34155 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34156 using bind = Desc<SgCallExpression, SgType* SgCallExpression::*, &SgCallExpression::p_expression_type>;
34157};
34159 using node = SgCallExpression;
34160 using base = SgExpression;
34161 static constexpr char const * const name{"CallExpression"};
34162 static constexpr unsigned long variant{858};
34163 static constexpr bool concrete{true};
34166};
34167template <> struct node_from_variant_t<858> { using type = SgCallExpression; };
34168
34169// Class: TypeCrayPointer
34171 using node = SgTypeCrayPointer;
34172 using base = SgType;
34173 static constexpr char const * const name{"TypeCrayPointer"};
34174 static constexpr unsigned long variant{859};
34175 static constexpr bool concrete{true};
34176 using subclasses_t = mp::List<>;
34177 using fields_t = mp::List<>;
34178};
34179template <> struct node_from_variant_t<859> { using type = SgTypeCrayPointer; };
34180
34181// Class: JavaImportStatement
34182template <> struct describe_field_t<SgJavaImportStatement,SgName,&SgJavaImportStatement::p_path> {
34184 using field_type = SgName;
34185 static constexpr size_t position{0};
34186 static constexpr char const * const name{"path"};
34187 static constexpr char const * const typestr{"SgName"};
34188 static constexpr bool traverse{false};
34189 static constexpr auto mbr_ptr{&SgJavaImportStatement::p_path};
34190 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34191 using bind = Desc<SgJavaImportStatement, SgName SgJavaImportStatement::*, &SgJavaImportStatement::p_path>;
34192};
34193template <> struct describe_field_t<SgJavaImportStatement,bool,&SgJavaImportStatement::p_containsWildCard> {
34195 using field_type = bool;
34196 static constexpr size_t position{1};
34197 static constexpr char const * const name{"containsWildCard"};
34198 static constexpr char const * const typestr{"bool"};
34199 static constexpr bool traverse{false};
34200 static constexpr auto mbr_ptr{&SgJavaImportStatement::p_containsWildCard};
34201 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34202 using bind = Desc<SgJavaImportStatement, bool SgJavaImportStatement::*, &SgJavaImportStatement::p_containsWildCard>;
34203};
34207 static constexpr char const * const name{"JavaImportStatement"};
34208 static constexpr unsigned long variant{860};
34209 static constexpr bool concrete{true};
34210 using subclasses_t = mp::List<>;
34212};
34213template <> struct node_from_variant_t<860> { using type = SgJavaImportStatement; };
34214
34215// Class: JavaPackageDeclaration
34218 using base = SgClassDeclaration;
34219 static constexpr char const * const name{"JavaPackageDeclaration"};
34220 static constexpr unsigned long variant{861};
34221 static constexpr bool concrete{true};
34222 using subclasses_t = mp::List<>;
34223 using fields_t = mp::List<>;
34224};
34225template <> struct node_from_variant_t<861> { using type = SgJavaPackageDeclaration; };
34226
34227// Class: JavaPackageStatement
34228template <> struct describe_field_t<SgJavaPackageStatement,SgName,&SgJavaPackageStatement::p_name> {
34230 using field_type = SgName;
34231 static constexpr size_t position{0};
34232 static constexpr char const * const name{"name"};
34233 static constexpr char const * const typestr{"SgName"};
34234 static constexpr bool traverse{false};
34235 static constexpr auto mbr_ptr{&SgJavaPackageStatement::p_name};
34236 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34237 using bind = Desc<SgJavaPackageStatement, SgName SgJavaPackageStatement::*, &SgJavaPackageStatement::p_name>;
34238};
34242 static constexpr char const * const name{"JavaPackageStatement"};
34243 static constexpr unsigned long variant{862};
34244 static constexpr bool concrete{true};
34245 using subclasses_t = mp::List<>;
34247};
34248template <> struct node_from_variant_t<862> { using type = SgJavaPackageStatement; };
34249
34250// Class: JavaImportStatementList
34251template <> struct describe_field_t<SgJavaImportStatementList,SgJavaImportStatementPtrList,&SgJavaImportStatementList::p_java_import_list> {
34253 using field_type = SgJavaImportStatementPtrList;
34254 static constexpr size_t position{0};
34255 static constexpr char const * const name{"java_import_list"};
34256 static constexpr char const * const typestr{"SgJavaImportStatementPtrList"};
34257 static constexpr bool traverse{true};
34258 static constexpr auto mbr_ptr{&SgJavaImportStatementList::p_java_import_list};
34259 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34260 using bind = Desc<SgJavaImportStatementList, SgJavaImportStatementPtrList SgJavaImportStatementList::*, &SgJavaImportStatementList::p_java_import_list>;
34261};
34264 using base = SgSupport;
34265 static constexpr char const * const name{"JavaImportStatementList"};
34266 static constexpr unsigned long variant{863};
34267 static constexpr bool concrete{true};
34268 using subclasses_t = mp::List<>;
34270};
34271template <> struct node_from_variant_t<863> { using type = SgJavaImportStatementList; };
34272
34273// Class: JavaClassDeclarationList
34274template <> struct describe_field_t<SgJavaClassDeclarationList,SgClassDeclarationPtrList,&SgJavaClassDeclarationList::p_java_class_list> {
34276 using field_type = SgClassDeclarationPtrList;
34277 static constexpr size_t position{0};
34278 static constexpr char const * const name{"java_class_list"};
34279 static constexpr char const * const typestr{"SgClassDeclarationPtrList"};
34280 static constexpr bool traverse{true};
34281 static constexpr auto mbr_ptr{&SgJavaClassDeclarationList::p_java_class_list};
34282 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34283 using bind = Desc<SgJavaClassDeclarationList, SgClassDeclarationPtrList SgJavaClassDeclarationList::*, &SgJavaClassDeclarationList::p_java_class_list>;
34284};
34287 using base = SgSupport;
34288 static constexpr char const * const name{"JavaClassDeclarationList"};
34289 static constexpr unsigned long variant{864};
34290 static constexpr bool concrete{true};
34291 using subclasses_t = mp::List<>;
34293};
34294template <> struct node_from_variant_t<864> { using type = SgJavaClassDeclarationList; };
34295
34296// Class: JavaMemberValuePair
34297template <> struct describe_field_t<SgJavaMemberValuePair,SgName,&SgJavaMemberValuePair::p_name> {
34299 using field_type = SgName;
34300 static constexpr size_t position{0};
34301 static constexpr char const * const name{"name"};
34302 static constexpr char const * const typestr{"SgName"};
34303 static constexpr bool traverse{false};
34304 static constexpr auto mbr_ptr{&SgJavaMemberValuePair::p_name};
34305 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34306 using bind = Desc<SgJavaMemberValuePair, SgName SgJavaMemberValuePair::*, &SgJavaMemberValuePair::p_name>;
34307};
34308template <> struct describe_field_t<SgJavaMemberValuePair,SgExpression*,&SgJavaMemberValuePair::p_value> {
34310 using field_type = SgExpression*;
34311 static constexpr size_t position{1};
34312 static constexpr char const * const name{"value"};
34313 static constexpr char const * const typestr{"SgExpression*"};
34314 static constexpr bool traverse{true};
34315 static constexpr auto mbr_ptr{&SgJavaMemberValuePair::p_value};
34316 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34317 using bind = Desc<SgJavaMemberValuePair, SgExpression* SgJavaMemberValuePair::*, &SgJavaMemberValuePair::p_value>;
34318};
34321 using base = SgLocatedNodeSupport;
34322 static constexpr char const * const name{"JavaMemberValuePair"};
34323 static constexpr unsigned long variant{865};
34324 static constexpr bool concrete{true};
34325 using subclasses_t = mp::List<>;
34327};
34328template <> struct node_from_variant_t<865> { using type = SgJavaMemberValuePair; };
34329
34330// Class: JavaAnnotation
34331template <> struct describe_field_t<SgJavaAnnotation,SgType*,&SgJavaAnnotation::p_expression_type> {
34332 using parent = SgJavaAnnotation;
34333 using field_type = SgType*;
34334 static constexpr size_t position{0};
34335 static constexpr char const * const name{"expression_type"};
34336 static constexpr char const * const typestr{"SgType*"};
34337 static constexpr bool traverse{false};
34338 static constexpr auto mbr_ptr{&SgJavaAnnotation::p_expression_type};
34339 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34340 using bind = Desc<SgJavaAnnotation, SgType* SgJavaAnnotation::*, &SgJavaAnnotation::p_expression_type>;
34341};
34343 using node = SgJavaAnnotation;
34344 using base = SgExpression;
34345 static constexpr char const * const name{"JavaAnnotation"};
34346 static constexpr unsigned long variant{866};
34347 static constexpr bool concrete{false};
34350};
34351template <> struct node_from_variant_t<866> { using type = SgJavaAnnotation; };
34352
34353// Class: JavaMarkerAnnotation
34356 using base = SgJavaAnnotation;
34357 static constexpr char const * const name{"JavaMarkerAnnotation"};
34358 static constexpr unsigned long variant{867};
34359 static constexpr bool concrete{true};
34360 using subclasses_t = mp::List<>;
34361 using fields_t = mp::List<>;
34362};
34363template <> struct node_from_variant_t<867> { using type = SgJavaMarkerAnnotation; };
34364
34365// Class: JavaSingleMemberAnnotation
34366template <> struct describe_field_t<SgJavaSingleMemberAnnotation,SgExpression*,&SgJavaSingleMemberAnnotation::p_value> {
34368 using field_type = SgExpression*;
34369 static constexpr size_t position{0};
34370 static constexpr char const * const name{"value"};
34371 static constexpr char const * const typestr{"SgExpression*"};
34372 static constexpr bool traverse{true};
34373 static constexpr auto mbr_ptr{&SgJavaSingleMemberAnnotation::p_value};
34374 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34375 using bind = Desc<SgJavaSingleMemberAnnotation, SgExpression* SgJavaSingleMemberAnnotation::*, &SgJavaSingleMemberAnnotation::p_value>;
34376};
34379 using base = SgJavaAnnotation;
34380 static constexpr char const * const name{"JavaSingleMemberAnnotation"};
34381 static constexpr unsigned long variant{868};
34382 static constexpr bool concrete{true};
34383 using subclasses_t = mp::List<>;
34385};
34386template <> struct node_from_variant_t<868> { using type = SgJavaSingleMemberAnnotation; };
34387
34388// Class: JavaNormalAnnotation
34389template <> struct describe_field_t<SgJavaNormalAnnotation,SgJavaMemberValuePairPtrList,&SgJavaNormalAnnotation::p_value_pair_list> {
34391 using field_type = SgJavaMemberValuePairPtrList;
34392 static constexpr size_t position{0};
34393 static constexpr char const * const name{"value_pair_list"};
34394 static constexpr char const * const typestr{"SgJavaMemberValuePairPtrList"};
34395 static constexpr bool traverse{true};
34396 static constexpr auto mbr_ptr{&SgJavaNormalAnnotation::p_value_pair_list};
34397 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34398 using bind = Desc<SgJavaNormalAnnotation, SgJavaMemberValuePairPtrList SgJavaNormalAnnotation::*, &SgJavaNormalAnnotation::p_value_pair_list>;
34399};
34402 using base = SgJavaAnnotation;
34403 static constexpr char const * const name{"JavaNormalAnnotation"};
34404 static constexpr unsigned long variant{869};
34405 static constexpr bool concrete{true};
34406 using subclasses_t = mp::List<>;
34408};
34409template <> struct node_from_variant_t<869> { using type = SgJavaNormalAnnotation; };
34410
34411// Class: JavaTypeExpression
34412template <> struct describe_field_t<SgJavaTypeExpression,SgType*,&SgJavaTypeExpression::p_type> {
34414 using field_type = SgType*;
34415 static constexpr size_t position{0};
34416 static constexpr char const * const name{"type"};
34417 static constexpr char const * const typestr{"SgType*"};
34418 static constexpr bool traverse{false};
34419 static constexpr auto mbr_ptr{&SgJavaTypeExpression::p_type};
34420 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34421 using bind = Desc<SgJavaTypeExpression, SgType* SgJavaTypeExpression::*, &SgJavaTypeExpression::p_type>;
34422};
34424 using node = SgJavaTypeExpression;
34425 using base = SgExpression;
34426 static constexpr char const * const name{"JavaTypeExpression"};
34427 static constexpr unsigned long variant{870};
34428 static constexpr bool concrete{true};
34429 using subclasses_t = mp::List<>;
34431};
34432template <> struct node_from_variant_t<870> { using type = SgJavaTypeExpression; };
34433
34434// Class: JavaQualifiedType
34435template <> struct describe_field_t<SgJavaQualifiedType,SgNamedType *,&SgJavaQualifiedType::p_parent_type> {
34437 using field_type = SgNamedType *;
34438 static constexpr size_t position{0};
34439 static constexpr char const * const name{"parent_type"};
34440 static constexpr char const * const typestr{"SgNamedType *"};
34441 static constexpr bool traverse{false};
34442 static constexpr auto mbr_ptr{&SgJavaQualifiedType::p_parent_type};
34443 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34444 using bind = Desc<SgJavaQualifiedType, SgNamedType * SgJavaQualifiedType::*, &SgJavaQualifiedType::p_parent_type>;
34445};
34446template <> struct describe_field_t<SgJavaQualifiedType,SgNamedType *,&SgJavaQualifiedType::p_type> {
34448 using field_type = SgNamedType *;
34449 static constexpr size_t position{1};
34450 static constexpr char const * const name{"type"};
34451 static constexpr char const * const typestr{"SgNamedType *"};
34452 static constexpr bool traverse{false};
34453 static constexpr auto mbr_ptr{&SgJavaQualifiedType::p_type};
34454 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34455 using bind = Desc<SgJavaQualifiedType, SgNamedType * SgJavaQualifiedType::*, &SgJavaQualifiedType::p_type>;
34456};
34458 using node = SgJavaQualifiedType;
34459 using base = SgNamedType;
34460 static constexpr char const * const name{"JavaQualifiedType"};
34461 static constexpr unsigned long variant{871};
34462 static constexpr bool concrete{true};
34463 using subclasses_t = mp::List<>;
34465};
34466template <> struct node_from_variant_t<871> { using type = SgJavaQualifiedType; };
34467
34468// Class: ClassExp
34469template <> struct describe_field_t<SgClassExp,SgClassSymbol*,&SgClassExp::p_class_symbol> {
34470 using parent = SgClassExp;
34471 using field_type = SgClassSymbol*;
34472 static constexpr size_t position{0};
34473 static constexpr char const * const name{"class_symbol"};
34474 static constexpr char const * const typestr{"SgClassSymbol*"};
34475 static constexpr bool traverse{false};
34476 static constexpr auto mbr_ptr{&SgClassExp::p_class_symbol};
34477 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34478 using bind = Desc<SgClassExp, SgClassSymbol* SgClassExp::*, &SgClassExp::p_class_symbol>;
34479};
34480template <> struct describe_field_t<SgClassExp,int,&SgClassExp::p_pobj_class> {
34481 using parent = SgClassExp;
34482 using field_type = int;
34483 static constexpr size_t position{1};
34484 static constexpr char const * const name{"pobj_class"};
34485 static constexpr char const * const typestr{"int"};
34486 static constexpr bool traverse{false};
34487 static constexpr auto mbr_ptr{&SgClassExp::p_pobj_class};
34488 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34489 using bind = Desc<SgClassExp, int SgClassExp::*, &SgClassExp::p_pobj_class>;
34490};
34491template <> struct describe_node_t<SgClassExp> {
34492 using node = SgClassExp;
34493 using base = SgExpression;
34494 static constexpr char const * const name{"ClassExp"};
34495 static constexpr unsigned long variant{872};
34496 static constexpr bool concrete{true};
34497 using subclasses_t = mp::List<>;
34499};
34500template <> struct node_from_variant_t<872> { using type = SgClassExp; };
34501
34502// Class: JavaUnionType
34503template <> struct describe_field_t<SgJavaUnionType,SgTypePtrList,&SgJavaUnionType::p_type_list> {
34504 using parent = SgJavaUnionType;
34505 using field_type = SgTypePtrList;
34506 static constexpr size_t position{0};
34507 static constexpr char const * const name{"type_list"};
34508 static constexpr char const * const typestr{"SgTypePtrList"};
34509 static constexpr bool traverse{false};
34510 static constexpr auto mbr_ptr{&SgJavaUnionType::p_type_list};
34511 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34512 using bind = Desc<SgJavaUnionType, SgTypePtrList SgJavaUnionType::*, &SgJavaUnionType::p_type_list>;
34513};
34515 using node = SgJavaUnionType;
34516 using base = SgType;
34517 static constexpr char const * const name{"JavaUnionType"};
34518 static constexpr unsigned long variant{873};
34519 static constexpr bool concrete{true};
34520 using subclasses_t = mp::List<>;
34522};
34523template <> struct node_from_variant_t<873> { using type = SgJavaUnionType; };
34524
34525// Class: JavaParameterType
34527 using node = SgJavaParameterType;
34528 using base = SgClassType;
34529 static constexpr char const * const name{"JavaParameterType"};
34530 static constexpr unsigned long variant{874};
34531 static constexpr bool concrete{true};
34532 using subclasses_t = mp::List<>;
34533 using fields_t = mp::List<>;
34534};
34535template <> struct node_from_variant_t<874> { using type = SgJavaParameterType; };
34536
34537// Class: AsyncStmt
34538template <> struct describe_field_t<SgAsyncStmt,SgStatement*,&SgAsyncStmt::p_body> {
34539 using parent = SgAsyncStmt;
34540 using field_type = SgStatement*;
34541 static constexpr size_t position{0};
34542 static constexpr char const * const name{"body"};
34543 static constexpr char const * const typestr{"SgStatement*"};
34544 static constexpr bool traverse{true};
34545 static constexpr auto mbr_ptr{&SgAsyncStmt::p_body};
34546 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34547 using bind = Desc<SgAsyncStmt, SgStatement* SgAsyncStmt::*, &SgAsyncStmt::p_body>;
34548};
34549template <> struct describe_node_t<SgAsyncStmt> {
34550 using node = SgAsyncStmt;
34551 using base = SgStatement;
34552 static constexpr char const * const name{"AsyncStmt"};
34553 static constexpr unsigned long variant{875};
34554 static constexpr bool concrete{true};
34555 using subclasses_t = mp::List<>;
34557};
34558template <> struct node_from_variant_t<875> { using type = SgAsyncStmt; };
34559
34560// Class: FinishStmt
34561template <> struct describe_field_t<SgFinishStmt,SgStatement*,&SgFinishStmt::p_body> {
34562 using parent = SgFinishStmt;
34563 using field_type = SgStatement*;
34564 static constexpr size_t position{0};
34565 static constexpr char const * const name{"body"};
34566 static constexpr char const * const typestr{"SgStatement*"};
34567 static constexpr bool traverse{true};
34568 static constexpr auto mbr_ptr{&SgFinishStmt::p_body};
34569 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34570 using bind = Desc<SgFinishStmt, SgStatement* SgFinishStmt::*, &SgFinishStmt::p_body>;
34571};
34572template <> struct describe_node_t<SgFinishStmt> {
34573 using node = SgFinishStmt;
34574 using base = SgStatement;
34575 static constexpr char const * const name{"FinishStmt"};
34576 static constexpr unsigned long variant{876};
34577 static constexpr bool concrete{true};
34578 using subclasses_t = mp::List<>;
34580};
34581template <> struct node_from_variant_t<876> { using type = SgFinishStmt; };
34582
34583// Class: AtStmt
34584template <> struct describe_field_t<SgAtStmt,SgExpression*,&SgAtStmt::p_expression> {
34585 using parent = SgAtStmt;
34586 using field_type = SgExpression*;
34587 static constexpr size_t position{0};
34588 static constexpr char const * const name{"expression"};
34589 static constexpr char const * const typestr{"SgExpression*"};
34590 static constexpr bool traverse{true};
34591 static constexpr auto mbr_ptr{&SgAtStmt::p_expression};
34592 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34593 using bind = Desc<SgAtStmt, SgExpression* SgAtStmt::*, &SgAtStmt::p_expression>;
34594};
34595template <> struct describe_field_t<SgAtStmt,SgStatement*,&SgAtStmt::p_body> {
34596 using parent = SgAtStmt;
34597 using field_type = SgStatement*;
34598 static constexpr size_t position{1};
34599 static constexpr char const * const name{"body"};
34600 static constexpr char const * const typestr{"SgStatement*"};
34601 static constexpr bool traverse{true};
34602 static constexpr auto mbr_ptr{&SgAtStmt::p_body};
34603 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34604 using bind = Desc<SgAtStmt, SgStatement* SgAtStmt::*, &SgAtStmt::p_body>;
34605};
34606template <> struct describe_node_t<SgAtStmt> {
34607 using node = SgAtStmt;
34608 using base = SgStatement;
34609 static constexpr char const * const name{"AtStmt"};
34610 static constexpr unsigned long variant{877};
34611 static constexpr bool concrete{true};
34612 using subclasses_t = mp::List<>;
34614};
34615template <> struct node_from_variant_t<877> { using type = SgAtStmt; };
34616
34617// Class: AtomicStmt
34618template <> struct describe_field_t<SgAtomicStmt,SgStatement*,&SgAtomicStmt::p_body> {
34619 using parent = SgAtomicStmt;
34620 using field_type = SgStatement*;
34621 static constexpr size_t position{0};
34622 static constexpr char const * const name{"body"};
34623 static constexpr char const * const typestr{"SgStatement*"};
34624 static constexpr bool traverse{true};
34625 static constexpr auto mbr_ptr{&SgAtomicStmt::p_body};
34626 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34627 using bind = Desc<SgAtomicStmt, SgStatement* SgAtomicStmt::*, &SgAtomicStmt::p_body>;
34628};
34629template <> struct describe_node_t<SgAtomicStmt> {
34630 using node = SgAtomicStmt;
34631 using base = SgStatement;
34632 static constexpr char const * const name{"AtomicStmt"};
34633 static constexpr unsigned long variant{878};
34634 static constexpr bool concrete{true};
34635 using subclasses_t = mp::List<>;
34637};
34638template <> struct node_from_variant_t<878> { using type = SgAtomicStmt; };
34639
34640// Class: WhenStmt
34641template <> struct describe_field_t<SgWhenStmt,SgExpression*,&SgWhenStmt::p_expression> {
34642 using parent = SgWhenStmt;
34643 using field_type = SgExpression*;
34644 static constexpr size_t position{0};
34645 static constexpr char const * const name{"expression"};
34646 static constexpr char const * const typestr{"SgExpression*"};
34647 static constexpr bool traverse{true};
34648 static constexpr auto mbr_ptr{&SgWhenStmt::p_expression};
34649 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34650 using bind = Desc<SgWhenStmt, SgExpression* SgWhenStmt::*, &SgWhenStmt::p_expression>;
34651};
34652template <> struct describe_field_t<SgWhenStmt,SgStatement*,&SgWhenStmt::p_body> {
34653 using parent = SgWhenStmt;
34654 using field_type = SgStatement*;
34655 static constexpr size_t position{1};
34656 static constexpr char const * const name{"body"};
34657 static constexpr char const * const typestr{"SgStatement*"};
34658 static constexpr bool traverse{true};
34659 static constexpr auto mbr_ptr{&SgWhenStmt::p_body};
34660 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34661 using bind = Desc<SgWhenStmt, SgStatement* SgWhenStmt::*, &SgWhenStmt::p_body>;
34662};
34663template <> struct describe_node_t<SgWhenStmt> {
34664 using node = SgWhenStmt;
34665 using base = SgStatement;
34666 static constexpr char const * const name{"WhenStmt"};
34667 static constexpr unsigned long variant{880};
34668 static constexpr bool concrete{true};
34669 using subclasses_t = mp::List<>;
34671};
34672template <> struct node_from_variant_t<880> { using type = SgWhenStmt; };
34673
34674// Class: AtExp
34675template <> struct describe_field_t<SgAtExp,SgExpression*,&SgAtExp::p_expression> {
34676 using parent = SgAtExp;
34677 using field_type = SgExpression*;
34678 static constexpr size_t position{0};
34679 static constexpr char const * const name{"expression"};
34680 static constexpr char const * const typestr{"SgExpression*"};
34681 static constexpr bool traverse{true};
34682 static constexpr auto mbr_ptr{&SgAtExp::p_expression};
34683 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34684 using bind = Desc<SgAtExp, SgExpression* SgAtExp::*, &SgAtExp::p_expression>;
34685};
34686template <> struct describe_field_t<SgAtExp,SgStatement*,&SgAtExp::p_body> {
34687 using parent = SgAtExp;
34688 using field_type = SgStatement*;
34689 static constexpr size_t position{1};
34690 static constexpr char const * const name{"body"};
34691 static constexpr char const * const typestr{"SgStatement*"};
34692 static constexpr bool traverse{true};
34693 static constexpr auto mbr_ptr{&SgAtExp::p_body};
34694 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34695 using bind = Desc<SgAtExp, SgStatement* SgAtExp::*, &SgAtExp::p_body>;
34696};
34697template <> struct describe_node_t<SgAtExp> {
34698 using node = SgAtExp;
34699 using base = SgExpression;
34700 static constexpr char const * const name{"AtExp"};
34701 static constexpr unsigned long variant{881};
34702 static constexpr bool concrete{true};
34703 using subclasses_t = mp::List<>;
34705};
34706template <> struct node_from_variant_t<881> { using type = SgAtExp; };
34707
34708// Class: FinishExp
34709template <> struct describe_field_t<SgFinishExp,SgExpression*,&SgFinishExp::p_expression> {
34710 using parent = SgFinishExp;
34711 using field_type = SgExpression*;
34712 static constexpr size_t position{0};
34713 static constexpr char const * const name{"expression"};
34714 static constexpr char const * const typestr{"SgExpression*"};
34715 static constexpr bool traverse{true};
34716 static constexpr auto mbr_ptr{&SgFinishExp::p_expression};
34717 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34718 using bind = Desc<SgFinishExp, SgExpression* SgFinishExp::*, &SgFinishExp::p_expression>;
34719};
34720template <> struct describe_field_t<SgFinishExp,SgStatement*,&SgFinishExp::p_body> {
34721 using parent = SgFinishExp;
34722 using field_type = SgStatement*;
34723 static constexpr size_t position{1};
34724 static constexpr char const * const name{"body"};
34725 static constexpr char const * const typestr{"SgStatement*"};
34726 static constexpr bool traverse{true};
34727 static constexpr auto mbr_ptr{&SgFinishExp::p_body};
34728 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34729 using bind = Desc<SgFinishExp, SgStatement* SgFinishExp::*, &SgFinishExp::p_body>;
34730};
34731template <> struct describe_node_t<SgFinishExp> {
34732 using node = SgFinishExp;
34733 using base = SgExpression;
34734 static constexpr char const * const name{"FinishExp"};
34735 static constexpr unsigned long variant{882};
34736 static constexpr bool concrete{true};
34737 using subclasses_t = mp::List<>;
34739};
34740template <> struct node_from_variant_t<882> { using type = SgFinishExp; };
34741
34742// Class: HereExp
34743template <> struct describe_field_t<SgHereExp,SgType*,&SgHereExp::p_expression_type> {
34744 using parent = SgHereExp;
34745 using field_type = SgType*;
34746 static constexpr size_t position{0};
34747 static constexpr char const * const name{"expression_type"};
34748 static constexpr char const * const typestr{"SgType*"};
34749 static constexpr bool traverse{false};
34750 static constexpr auto mbr_ptr{&SgHereExp::p_expression_type};
34751 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34752 using bind = Desc<SgHereExp, SgType* SgHereExp::*, &SgHereExp::p_expression_type>;
34753};
34754template <> struct describe_field_t<SgHereExp,SgExpression*,&SgHereExp::p_expression> {
34755 using parent = SgHereExp;
34756 using field_type = SgExpression*;
34757 static constexpr size_t position{1};
34758 static constexpr char const * const name{"expression"};
34759 static constexpr char const * const typestr{"SgExpression*"};
34760 static constexpr bool traverse{true};
34761 static constexpr auto mbr_ptr{&SgHereExp::p_expression};
34762 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34763 using bind = Desc<SgHereExp, SgExpression* SgHereExp::*, &SgHereExp::p_expression>;
34764};
34765template <> struct describe_node_t<SgHereExp> {
34766 using node = SgHereExp;
34767 using base = SgExpression;
34768 static constexpr char const * const name{"HereExp"};
34769 static constexpr unsigned long variant{883};
34770 static constexpr bool concrete{true};
34771 using subclasses_t = mp::List<>;
34773};
34774template <> struct node_from_variant_t<883> { using type = SgHereExp; };
34775
34776// Class: DotDotExp
34777template <> struct describe_node_t<SgDotDotExp> {
34778 using node = SgDotDotExp;
34779 using base = SgBinaryOp;
34780 static constexpr char const * const name{"DotDotExp"};
34781 static constexpr unsigned long variant{884};
34782 static constexpr bool concrete{true};
34783 using subclasses_t = mp::List<>;
34784 using fields_t = mp::List<>;
34785};
34786template <> struct node_from_variant_t<884> { using type = SgDotDotExp; };
34787
34788// Class: AsmNullInstruction
34790 using node = SgAsmNullInstruction;
34791 using base = SgAsmInstruction;
34792 static constexpr char const * const name{"AsmNullInstruction"};
34793 static constexpr unsigned long variant{885};
34794 static constexpr bool concrete{true};
34795 using subclasses_t = mp::List<>;
34796 using fields_t = mp::List<>;
34797};
34798template <> struct node_from_variant_t<885> { using type = SgAsmNullInstruction; };
34799
34800// Class: AdaComponentClause
34801template <> struct describe_field_t<SgAdaComponentClause,SgVarRefExp*,&SgAdaComponentClause::p_component> {
34803 using field_type = SgVarRefExp*;
34804 static constexpr size_t position{0};
34805 static constexpr char const * const name{"component"};
34806 static constexpr char const * const typestr{"SgVarRefExp*"};
34807 static constexpr bool traverse{true};
34808 static constexpr auto mbr_ptr{&SgAdaComponentClause::p_component};
34809 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34810 using bind = Desc<SgAdaComponentClause, SgVarRefExp* SgAdaComponentClause::*, &SgAdaComponentClause::p_component>;
34811};
34812template <> struct describe_field_t<SgAdaComponentClause,SgExpression*,&SgAdaComponentClause::p_offset> {
34814 using field_type = SgExpression*;
34815 static constexpr size_t position{1};
34816 static constexpr char const * const name{"offset"};
34817 static constexpr char const * const typestr{"SgExpression*"};
34818 static constexpr bool traverse{true};
34819 static constexpr auto mbr_ptr{&SgAdaComponentClause::p_offset};
34820 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34821 using bind = Desc<SgAdaComponentClause, SgExpression* SgAdaComponentClause::*, &SgAdaComponentClause::p_offset>;
34822};
34823template <> struct describe_field_t<SgAdaComponentClause,SgRangeExp*,&SgAdaComponentClause::p_range> {
34825 using field_type = SgRangeExp*;
34826 static constexpr size_t position{2};
34827 static constexpr char const * const name{"range"};
34828 static constexpr char const * const typestr{"SgRangeExp*"};
34829 static constexpr bool traverse{true};
34830 static constexpr auto mbr_ptr{&SgAdaComponentClause::p_range};
34831 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34832 using bind = Desc<SgAdaComponentClause, SgRangeExp* SgAdaComponentClause::*, &SgAdaComponentClause::p_range>;
34833};
34835 using node = SgAdaComponentClause;
34837 static constexpr char const * const name{"AdaComponentClause"};
34838 static constexpr unsigned long variant{886};
34839 static constexpr bool concrete{true};
34840 using subclasses_t = mp::List<>;
34842};
34843template <> struct node_from_variant_t<886> { using type = SgAdaComponentClause; };
34844
34845// Class: AdaIndexConstraint
34846template <> struct describe_field_t<SgAdaIndexConstraint,SgExpressionPtrList,&SgAdaIndexConstraint::p_indexRanges> {
34848 using field_type = SgExpressionPtrList;
34849 static constexpr size_t position{0};
34850 static constexpr char const * const name{"indexRanges"};
34851 static constexpr char const * const typestr{"SgExpressionPtrList"};
34852 static constexpr bool traverse{true};
34853 static constexpr auto mbr_ptr{&SgAdaIndexConstraint::p_indexRanges};
34854 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34855 using bind = Desc<SgAdaIndexConstraint, SgExpressionPtrList SgAdaIndexConstraint::*, &SgAdaIndexConstraint::p_indexRanges>;
34856};
34858 using node = SgAdaIndexConstraint;
34859 using base = SgAdaTypeConstraint;
34860 static constexpr char const * const name{"AdaIndexConstraint"};
34861 static constexpr unsigned long variant{887};
34862 static constexpr bool concrete{true};
34863 using subclasses_t = mp::List<>;
34865};
34866template <> struct node_from_variant_t<887> { using type = SgAdaIndexConstraint; };
34867
34868// Class: AdaModularType
34869template <> struct describe_field_t<SgAdaModularType,SgExpression*,&SgAdaModularType::p_modexpr> {
34870 using parent = SgAdaModularType;
34871 using field_type = SgExpression*;
34872 static constexpr size_t position{0};
34873 static constexpr char const * const name{"modexpr"};
34874 static constexpr char const * const typestr{"SgExpression*"};
34875 static constexpr bool traverse{true};
34876 static constexpr auto mbr_ptr{&SgAdaModularType::p_modexpr};
34877 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34878 using bind = Desc<SgAdaModularType, SgExpression* SgAdaModularType::*, &SgAdaModularType::p_modexpr>;
34879};
34881 using node = SgAdaModularType;
34882 using base = SgType;
34883 static constexpr char const * const name{"AdaModularType"};
34884 static constexpr unsigned long variant{888};
34885 static constexpr bool concrete{true};
34886 using subclasses_t = mp::List<>;
34888};
34889template <> struct node_from_variant_t<888> { using type = SgAdaModularType; };
34890
34891// Class: AdaRepresentationClause
34892template <> struct describe_field_t<SgAdaRepresentationClause,SgType*,&SgAdaRepresentationClause::p_recordType> {
34894 using field_type = SgType*;
34895 static constexpr size_t position{0};
34896 static constexpr char const * const name{"recordType"};
34897 static constexpr char const * const typestr{"SgType*"};
34898 static constexpr bool traverse{false};
34899 static constexpr auto mbr_ptr{&SgAdaRepresentationClause::p_recordType};
34900 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34901 using bind = Desc<SgAdaRepresentationClause, SgType* SgAdaRepresentationClause::*, &SgAdaRepresentationClause::p_recordType>;
34902};
34903template <> struct describe_field_t<SgAdaRepresentationClause,SgExpression*,&SgAdaRepresentationClause::p_alignment> {
34905 using field_type = SgExpression*;
34906 static constexpr size_t position{1};
34907 static constexpr char const * const name{"alignment"};
34908 static constexpr char const * const typestr{"SgExpression*"};
34909 static constexpr bool traverse{true};
34910 static constexpr auto mbr_ptr{&SgAdaRepresentationClause::p_alignment};
34911 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34912 using bind = Desc<SgAdaRepresentationClause, SgExpression* SgAdaRepresentationClause::*, &SgAdaRepresentationClause::p_alignment>;
34913};
34914template <> struct describe_field_t<SgAdaRepresentationClause,SgBasicBlock*,&SgAdaRepresentationClause::p_components> {
34916 using field_type = SgBasicBlock*;
34917 static constexpr size_t position{2};
34918 static constexpr char const * const name{"components"};
34919 static constexpr char const * const typestr{"SgBasicBlock*"};
34920 static constexpr bool traverse{true};
34921 static constexpr auto mbr_ptr{&SgAdaRepresentationClause::p_components};
34922 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34923 using bind = Desc<SgAdaRepresentationClause, SgBasicBlock* SgAdaRepresentationClause::*, &SgAdaRepresentationClause::p_components>;
34924};
34934template <> struct node_from_variant_t<889> { using type = SgAdaRepresentationClause; };
34935
34936// Class: AdaFunctionRenamingDecl
34937template <> struct describe_field_t<SgAdaFunctionRenamingDecl,SgExpression*,&SgAdaFunctionRenamingDecl::p_renamed_function> {
34939 using field_type = SgExpression*;
34940 static constexpr size_t position{0};
34941 static constexpr char const * const name{"renamed_function"};
34942 static constexpr char const * const typestr{"SgExpression*"};
34943 static constexpr bool traverse{true};
34944 static constexpr auto mbr_ptr{&SgAdaFunctionRenamingDecl::p_renamed_function};
34945 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34946 using bind = Desc<SgAdaFunctionRenamingDecl, SgExpression* SgAdaFunctionRenamingDecl::*, &SgAdaFunctionRenamingDecl::p_renamed_function>;
34947};
34951 static constexpr char const * const name{"AdaFunctionRenamingDecl"};
34952 static constexpr unsigned long variant{890};
34953 static constexpr bool concrete{true};
34954 using subclasses_t = mp::List<>;
34956};
34957template <> struct node_from_variant_t<890> { using type = SgAdaFunctionRenamingDecl; };
34958
34959// Class: AdaSelectStmt
34960template <> struct describe_field_t<SgAdaSelectStmt,SgAdaSelectAlternativeStmt*,&SgAdaSelectStmt::p_select_path> {
34961 using parent = SgAdaSelectStmt;
34963 static constexpr size_t position{0};
34964 static constexpr char const * const name{"select_path"};
34965 static constexpr char const * const typestr{"SgAdaSelectAlternativeStmt*"};
34966 static constexpr bool traverse{true};
34967 static constexpr auto mbr_ptr{&SgAdaSelectStmt::p_select_path};
34968 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34969 using bind = Desc<SgAdaSelectStmt, SgAdaSelectAlternativeStmt* SgAdaSelectStmt::*, &SgAdaSelectStmt::p_select_path>;
34970};
34971template <> struct describe_field_t<SgAdaSelectStmt,SgAdaSelectAlternativeStmt*,&SgAdaSelectStmt::p_or_path> {
34972 using parent = SgAdaSelectStmt;
34974 static constexpr size_t position{1};
34975 static constexpr char const * const name{"or_path"};
34976 static constexpr char const * const typestr{"SgAdaSelectAlternativeStmt*"};
34977 static constexpr bool traverse{true};
34978 static constexpr auto mbr_ptr{&SgAdaSelectStmt::p_or_path};
34979 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34980 using bind = Desc<SgAdaSelectStmt, SgAdaSelectAlternativeStmt* SgAdaSelectStmt::*, &SgAdaSelectStmt::p_or_path>;
34981};
34982template <> struct describe_field_t<SgAdaSelectStmt,SgBasicBlock*,&SgAdaSelectStmt::p_else_path> {
34983 using parent = SgAdaSelectStmt;
34984 using field_type = SgBasicBlock*;
34985 static constexpr size_t position{2};
34986 static constexpr char const * const name{"else_path"};
34987 static constexpr char const * const typestr{"SgBasicBlock*"};
34988 static constexpr bool traverse{true};
34989 static constexpr auto mbr_ptr{&SgAdaSelectStmt::p_else_path};
34990 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
34991 using bind = Desc<SgAdaSelectStmt, SgBasicBlock* SgAdaSelectStmt::*, &SgAdaSelectStmt::p_else_path>;
34992};
34993template <> struct describe_field_t<SgAdaSelectStmt,SgBasicBlock*,&SgAdaSelectStmt::p_abort_path> {
34994 using parent = SgAdaSelectStmt;
34995 using field_type = SgBasicBlock*;
34996 static constexpr size_t position{3};
34997 static constexpr char const * const name{"abort_path"};
34998 static constexpr char const * const typestr{"SgBasicBlock*"};
34999 static constexpr bool traverse{true};
35000 static constexpr auto mbr_ptr{&SgAdaSelectStmt::p_abort_path};
35001 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35002 using bind = Desc<SgAdaSelectStmt, SgBasicBlock* SgAdaSelectStmt::*, &SgAdaSelectStmt::p_abort_path>;
35003};
35004template <> struct describe_field_t<SgAdaSelectStmt,SgAdaSelectStmt::select_type_enum,&SgAdaSelectStmt::p_select_type> {
35005 using parent = SgAdaSelectStmt;
35006 using field_type = SgAdaSelectStmt::select_type_enum;
35007 static constexpr size_t position{4};
35008 static constexpr char const * const name{"select_type"};
35009 static constexpr char const * const typestr{"SgAdaSelectStmt::select_type_enum"};
35010 static constexpr bool traverse{false};
35011 static constexpr auto mbr_ptr{&SgAdaSelectStmt::p_select_type};
35012 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35013 using bind = Desc<SgAdaSelectStmt, SgAdaSelectStmt::select_type_enum SgAdaSelectStmt::*, &SgAdaSelectStmt::p_select_type>;
35014};
35024template <> struct node_from_variant_t<891> { using type = SgAdaSelectStmt; };
35025
35026// Class: AdaSelectAlternativeStmt
35027template <> struct describe_field_t<SgAdaSelectAlternativeStmt,SgBasicBlock*,&SgAdaSelectAlternativeStmt::p_body> {
35029 using field_type = SgBasicBlock*;
35030 static constexpr size_t position{0};
35031 static constexpr char const * const name{"body"};
35032 static constexpr char const * const typestr{"SgBasicBlock*"};
35033 static constexpr bool traverse{true};
35034 static constexpr auto mbr_ptr{&SgAdaSelectAlternativeStmt::p_body};
35035 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35036 using bind = Desc<SgAdaSelectAlternativeStmt, SgBasicBlock* SgAdaSelectAlternativeStmt::*, &SgAdaSelectAlternativeStmt::p_body>;
35037};
35038template <> struct describe_field_t<SgAdaSelectAlternativeStmt,SgExpression*,&SgAdaSelectAlternativeStmt::p_guard> {
35040 using field_type = SgExpression*;
35041 static constexpr size_t position{1};
35042 static constexpr char const * const name{"guard"};
35043 static constexpr char const * const typestr{"SgExpression*"};
35044 static constexpr bool traverse{true};
35045 static constexpr auto mbr_ptr{&SgAdaSelectAlternativeStmt::p_guard};
35046 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35047 using bind = Desc<SgAdaSelectAlternativeStmt, SgExpression* SgAdaSelectAlternativeStmt::*, &SgAdaSelectAlternativeStmt::p_guard>;
35048};
35049template <> struct describe_field_t<SgAdaSelectAlternativeStmt,SgAdaSelectAlternativeStmt*,&SgAdaSelectAlternativeStmt::p_next> {
35052 static constexpr size_t position{2};
35053 static constexpr char const * const name{"next"};
35054 static constexpr char const * const typestr{"SgAdaSelectAlternativeStmt*"};
35055 static constexpr bool traverse{true};
35056 static constexpr auto mbr_ptr{&SgAdaSelectAlternativeStmt::p_next};
35057 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35058 using bind = Desc<SgAdaSelectAlternativeStmt, SgAdaSelectAlternativeStmt* SgAdaSelectAlternativeStmt::*, &SgAdaSelectAlternativeStmt::p_next>;
35059};
35069template <> struct node_from_variant_t<892> { using type = SgAdaSelectAlternativeStmt; };
35070
35071// Class: AdaTerminateStmt
35073 using node = SgAdaTerminateStmt;
35074 using base = SgStatement;
35075 static constexpr char const * const name{"AdaTerminateStmt"};
35076 static constexpr unsigned long variant{893};
35077 static constexpr bool concrete{true};
35078 using subclasses_t = mp::List<>;
35079 using fields_t = mp::List<>;
35080};
35081template <> struct node_from_variant_t<893> { using type = SgAdaTerminateStmt; };
35082
35083// Class: AsmAarch32Coprocessor
35086 using base = SgAsmExpression;
35087 static constexpr char const * const name{"AsmAarch32Coprocessor"};
35088 static constexpr unsigned long variant{895};
35089 static constexpr bool concrete{true};
35090 using subclasses_t = mp::List<>;
35091 using fields_t = mp::List<>;
35092};
35093template <> struct node_from_variant_t<895> { using type = SgAsmAarch32Coprocessor; };
35094
35095// Class: AdaAttributeClause
35096template <> struct describe_field_t<SgAdaAttributeClause,SgAdaAttributeExp*,&SgAdaAttributeClause::p_attribute> {
35099 static constexpr size_t position{0};
35100 static constexpr char const * const name{"attribute"};
35101 static constexpr char const * const typestr{"SgAdaAttributeExp*"};
35102 static constexpr bool traverse{true};
35103 static constexpr auto mbr_ptr{&SgAdaAttributeClause::p_attribute};
35104 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35105 using bind = Desc<SgAdaAttributeClause, SgAdaAttributeExp* SgAdaAttributeClause::*, &SgAdaAttributeClause::p_attribute>;
35106};
35107template <> struct describe_field_t<SgAdaAttributeClause,SgExpression*,&SgAdaAttributeClause::p_size> {
35109 using field_type = SgExpression*;
35110 static constexpr size_t position{1};
35111 static constexpr char const * const name{"size"};
35112 static constexpr char const * const typestr{"SgExpression*"};
35113 static constexpr bool traverse{true};
35114 static constexpr auto mbr_ptr{&SgAdaAttributeClause::p_size};
35115 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35116 using bind = Desc<SgAdaAttributeClause, SgExpression* SgAdaAttributeClause::*, &SgAdaAttributeClause::p_size>;
35117};
35119 using node = SgAdaAttributeClause;
35121 static constexpr char const * const name{"AdaAttributeClause"};
35122 static constexpr unsigned long variant{896};
35123 static constexpr bool concrete{true};
35124 using subclasses_t = mp::List<>;
35126};
35127template <> struct node_from_variant_t<896> { using type = SgAdaAttributeClause; };
35128
35129// Class: AsmBinaryConcat
35131 using node = SgAsmBinaryConcat;
35133 static constexpr char const * const name{"AsmBinaryConcat"};
35134 static constexpr unsigned long variant{897};
35135 static constexpr bool concrete{true};
35136 using subclasses_t = mp::List<>;
35137 using fields_t = mp::List<>;
35138};
35139template <> struct node_from_variant_t<897> { using type = SgAsmBinaryConcat; };
35140
35141// Class: AsmByteOrder
35142template <> struct describe_node_t<SgAsmByteOrder> {
35143 using node = SgAsmByteOrder;
35144 using base = SgAsmExpression;
35145 static constexpr char const * const name{"AsmByteOrder"};
35146 static constexpr unsigned long variant{898};
35147 static constexpr bool concrete{true};
35148 using subclasses_t = mp::List<>;
35149 using fields_t = mp::List<>;
35150};
35151template <> struct node_from_variant_t<898> { using type = SgAsmByteOrder; };
35152
35153// Class: AdaDerivedType
35154template <> struct describe_field_t<SgAdaDerivedType,SgType*,&SgAdaDerivedType::p_base_type> {
35155 using parent = SgAdaDerivedType;
35156 using field_type = SgType*;
35157 static constexpr size_t position{0};
35158 static constexpr char const * const name{"base_type"};
35159 static constexpr char const * const typestr{"SgType*"};
35160 static constexpr bool traverse{true};
35161 static constexpr auto mbr_ptr{&SgAdaDerivedType::p_base_type};
35162 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35163 using bind = Desc<SgAdaDerivedType, SgType* SgAdaDerivedType::*, &SgAdaDerivedType::p_base_type>;
35164};
35166 using node = SgAdaDerivedType;
35167 using base = SgType;
35168 static constexpr char const * const name{"AdaDerivedType"};
35169 static constexpr unsigned long variant{899};
35170 static constexpr bool concrete{true};
35171 using subclasses_t = mp::List<>;
35173};
35174template <> struct node_from_variant_t<899> { using type = SgAdaDerivedType; };
35175
35176// Class: AdaAttributeExp
35177template <> struct describe_field_t<SgAdaAttributeExp,SgName,&SgAdaAttributeExp::p_attribute> {
35178 using parent = SgAdaAttributeExp;
35179 using field_type = SgName;
35180 static constexpr size_t position{0};
35181 static constexpr char const * const name{"attribute"};
35182 static constexpr char const * const typestr{"SgName"};
35183 static constexpr bool traverse{false};
35184 static constexpr auto mbr_ptr{&SgAdaAttributeExp::p_attribute};
35185 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35186 using bind = Desc<SgAdaAttributeExp, SgName SgAdaAttributeExp::*, &SgAdaAttributeExp::p_attribute>;
35187};
35188template <> struct describe_field_t<SgAdaAttributeExp,SgExpression*,&SgAdaAttributeExp::p_object> {
35189 using parent = SgAdaAttributeExp;
35190 using field_type = SgExpression*;
35191 static constexpr size_t position{1};
35192 static constexpr char const * const name{"object"};
35193 static constexpr char const * const typestr{"SgExpression*"};
35194 static constexpr bool traverse{true};
35195 static constexpr auto mbr_ptr{&SgAdaAttributeExp::p_object};
35196 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35197 using bind = Desc<SgAdaAttributeExp, SgExpression* SgAdaAttributeExp::*, &SgAdaAttributeExp::p_object>;
35198};
35199template <> struct describe_field_t<SgAdaAttributeExp,SgExprListExp*,&SgAdaAttributeExp::p_args> {
35200 using parent = SgAdaAttributeExp;
35201 using field_type = SgExprListExp*;
35202 static constexpr size_t position{2};
35203 static constexpr char const * const name{"args"};
35204 static constexpr char const * const typestr{"SgExprListExp*"};
35205 static constexpr bool traverse{true};
35206 static constexpr auto mbr_ptr{&SgAdaAttributeExp::p_args};
35207 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35208 using bind = Desc<SgAdaAttributeExp, SgExprListExp* SgAdaAttributeExp::*, &SgAdaAttributeExp::p_args>;
35209};
35210template <> struct describe_field_t<SgAdaAttributeExp,SgType*,&SgAdaAttributeExp::p_attrType> {
35211 using parent = SgAdaAttributeExp;
35212 using field_type = SgType*;
35213 static constexpr size_t position{3};
35214 static constexpr char const * const name{"attrType"};
35215 static constexpr char const * const typestr{"SgType*"};
35216 static constexpr bool traverse{false};
35217 static constexpr auto mbr_ptr{&SgAdaAttributeExp::p_attrType};
35218 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35219 using bind = Desc<SgAdaAttributeExp, SgType* SgAdaAttributeExp::*, &SgAdaAttributeExp::p_attrType>;
35220};
35230template <> struct node_from_variant_t<900> { using type = SgAdaAttributeExp; };
35231
35232// Class: AdaEnumRepresentationClause
35233template <> struct describe_field_t<SgAdaEnumRepresentationClause,SgType*,&SgAdaEnumRepresentationClause::p_enumType> {
35235 using field_type = SgType*;
35236 static constexpr size_t position{0};
35237 static constexpr char const * const name{"enumType"};
35238 static constexpr char const * const typestr{"SgType*"};
35239 static constexpr bool traverse{false};
35240 static constexpr auto mbr_ptr{&SgAdaEnumRepresentationClause::p_enumType};
35241 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35242 using bind = Desc<SgAdaEnumRepresentationClause, SgType* SgAdaEnumRepresentationClause::*, &SgAdaEnumRepresentationClause::p_enumType>;
35243};
35244template <> struct describe_field_t<SgAdaEnumRepresentationClause,SgExprListExp*,&SgAdaEnumRepresentationClause::p_components> {
35246 using field_type = SgExprListExp*;
35247 static constexpr size_t position{1};
35248 static constexpr char const * const name{"components"};
35249 static constexpr char const * const typestr{"SgExprListExp*"};
35250 static constexpr bool traverse{true};
35251 static constexpr auto mbr_ptr{&SgAdaEnumRepresentationClause::p_components};
35252 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35253 using bind = Desc<SgAdaEnumRepresentationClause, SgExprListExp* SgAdaEnumRepresentationClause::*, &SgAdaEnumRepresentationClause::p_components>;
35254};
35258 static constexpr char const * const name{"AdaEnumRepresentationClause"};
35259 static constexpr unsigned long variant{901};
35260 static constexpr bool concrete{true};
35261 using subclasses_t = mp::List<>;
35263};
35264template <> struct node_from_variant_t<901> { using type = SgAdaEnumRepresentationClause; };
35265
35266// Class: AsmBinaryPreupdate
35268 using node = SgAsmBinaryPreupdate;
35270 static constexpr char const * const name{"AsmBinaryPreupdate"};
35271 static constexpr unsigned long variant{902};
35272 static constexpr bool concrete{true};
35273 using subclasses_t = mp::List<>;
35274 using fields_t = mp::List<>;
35275};
35276template <> struct node_from_variant_t<902> { using type = SgAsmBinaryPreupdate; };
35277
35278// Class: AsmBinaryPostupdate
35282 static constexpr char const * const name{"AsmBinaryPostupdate"};
35283 static constexpr unsigned long variant{903};
35284 static constexpr bool concrete{true};
35285 using subclasses_t = mp::List<>;
35286 using fields_t = mp::List<>;
35287};
35288template <> struct node_from_variant_t<903> { using type = SgAsmBinaryPostupdate; };
35289
35290// Class: AdaOthersExp
35291template <> struct describe_node_t<SgAdaOthersExp> {
35292 using node = SgAdaOthersExp;
35293 using base = SgExpression;
35294 static constexpr char const * const name{"AdaOthersExp"};
35295 static constexpr unsigned long variant{904};
35296 static constexpr bool concrete{true};
35297 using subclasses_t = mp::List<>;
35298 using fields_t = mp::List<>;
35299};
35300template <> struct node_from_variant_t<904> { using type = SgAdaOthersExp; };
35301
35302// Class: AdaRenamingSymbol
35303template <> struct describe_field_t<SgAdaRenamingSymbol,SgAdaRenamingDecl*,&SgAdaRenamingSymbol::p_declaration> {
35306 static constexpr size_t position{0};
35307 static constexpr char const * const name{"declaration"};
35308 static constexpr char const * const typestr{"SgAdaRenamingDecl*"};
35309 static constexpr bool traverse{true};
35310 static constexpr auto mbr_ptr{&SgAdaRenamingSymbol::p_declaration};
35311 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35312 using bind = Desc<SgAdaRenamingSymbol, SgAdaRenamingDecl* SgAdaRenamingSymbol::*, &SgAdaRenamingSymbol::p_declaration>;
35313};
35315 using node = SgAdaRenamingSymbol;
35316 using base = SgSymbol;
35317 static constexpr char const * const name{"AdaRenamingSymbol"};
35318 static constexpr unsigned long variant{905};
35319 static constexpr bool concrete{true};
35320 using subclasses_t = mp::List<>;
35322};
35323template <> struct node_from_variant_t<905> { using type = SgAdaRenamingSymbol; };
35324
35325// Class: AdaRenamingRefExp
35326template <> struct describe_field_t<SgAdaRenamingRefExp,SgAdaRenamingSymbol*,&SgAdaRenamingRefExp::p_symbol> {
35329 static constexpr size_t position{0};
35330 static constexpr char const * const name{"symbol"};
35331 static constexpr char const * const typestr{"SgAdaRenamingSymbol*"};
35332 static constexpr bool traverse{false};
35333 static constexpr auto mbr_ptr{&SgAdaRenamingRefExp::p_symbol};
35334 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35335 using bind = Desc<SgAdaRenamingRefExp, SgAdaRenamingSymbol* SgAdaRenamingRefExp::*, &SgAdaRenamingRefExp::p_symbol>;
35336};
35338 using node = SgAdaRenamingRefExp;
35339 using base = SgExpression;
35340 static constexpr char const * const name{"AdaRenamingRefExp"};
35341 static constexpr unsigned long variant{906};
35342 static constexpr bool concrete{true};
35343 using subclasses_t = mp::List<>;
35345};
35346template <> struct node_from_variant_t<906> { using type = SgAdaRenamingRefExp; };
35347
35348// Class: AdaGenericDecl
35349template <> struct describe_field_t<SgAdaGenericDecl,SgName,&SgAdaGenericDecl::p_name> {
35350 using parent = SgAdaGenericDecl;
35351 using field_type = SgName;
35352 static constexpr size_t position{0};
35353 static constexpr char const * const name{"name"};
35354 static constexpr char const * const typestr{"SgName"};
35355 static constexpr bool traverse{false};
35356 static constexpr auto mbr_ptr{&SgAdaGenericDecl::p_name};
35357 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35358 using bind = Desc<SgAdaGenericDecl, SgName SgAdaGenericDecl::*, &SgAdaGenericDecl::p_name>;
35359};
35360template <> struct describe_field_t<SgAdaGenericDecl,SgAdaGenericDefn*,&SgAdaGenericDecl::p_definition> {
35361 using parent = SgAdaGenericDecl;
35363 static constexpr size_t position{1};
35364 static constexpr char const * const name{"definition"};
35365 static constexpr char const * const typestr{"SgAdaGenericDefn*"};
35366 static constexpr bool traverse{true};
35367 static constexpr auto mbr_ptr{&SgAdaGenericDecl::p_definition};
35368 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35369 using bind = Desc<SgAdaGenericDecl, SgAdaGenericDefn* SgAdaGenericDecl::*, &SgAdaGenericDecl::p_definition>;
35370};
35371template <> struct describe_field_t<SgAdaGenericDecl,SgDeclarationStatement*,&SgAdaGenericDecl::p_declaration> {
35372 using parent = SgAdaGenericDecl;
35374 static constexpr size_t position{2};
35375 static constexpr char const * const name{"declaration"};
35376 static constexpr char const * const typestr{"SgDeclarationStatement*"};
35377 static constexpr bool traverse{true};
35378 static constexpr auto mbr_ptr{&SgAdaGenericDecl::p_declaration};
35379 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35380 using bind = Desc<SgAdaGenericDecl, SgDeclarationStatement* SgAdaGenericDecl::*, &SgAdaGenericDecl::p_declaration>;
35381};
35382template <> struct describe_field_t<SgAdaGenericDecl,SgScopeStatement*,&SgAdaGenericDecl::p_scope> {
35383 using parent = SgAdaGenericDecl;
35385 static constexpr size_t position{3};
35386 static constexpr char const * const name{"scope"};
35387 static constexpr char const * const typestr{"SgScopeStatement*"};
35388 static constexpr bool traverse{false};
35389 static constexpr auto mbr_ptr{&SgAdaGenericDecl::p_scope};
35390 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35391 using bind = Desc<SgAdaGenericDecl, SgScopeStatement* SgAdaGenericDecl::*, &SgAdaGenericDecl::p_scope>;
35392};
35402template <> struct node_from_variant_t<907> { using type = SgAdaGenericDecl; };
35403
35404// Class: AdaGenericDefn
35405template <> struct describe_field_t<SgAdaGenericDefn,SgDeclarationStatementPtrList,&SgAdaGenericDefn::p_declarations> {
35406 using parent = SgAdaGenericDefn;
35407 using field_type = SgDeclarationStatementPtrList;
35408 static constexpr size_t position{0};
35409 static constexpr char const * const name{"declarations"};
35410 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
35411 static constexpr bool traverse{true};
35412 static constexpr auto mbr_ptr{&SgAdaGenericDefn::p_declarations};
35413 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35414 using bind = Desc<SgAdaGenericDefn, SgDeclarationStatementPtrList SgAdaGenericDefn::*, &SgAdaGenericDefn::p_declarations>;
35415};
35417 using node = SgAdaGenericDefn;
35418 using base = SgScopeStatement;
35419 static constexpr char const * const name{"AdaGenericDefn"};
35420 static constexpr unsigned long variant{908};
35421 static constexpr bool concrete{true};
35422 using subclasses_t = mp::List<>;
35424};
35425template <> struct node_from_variant_t<908> { using type = SgAdaGenericDefn; };
35426
35427// Class: AdaFormalType
35428template <> struct describe_field_t<SgAdaFormalType,bool,&SgAdaFormalType::p_is_private> {
35429 using parent = SgAdaFormalType;
35430 using field_type = bool;
35431 static constexpr size_t position{0};
35432 static constexpr char const * const name{"is_private"};
35433 static constexpr char const * const typestr{"bool"};
35434 static constexpr bool traverse{false};
35435 static constexpr auto mbr_ptr{&SgAdaFormalType::p_is_private};
35436 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35437 using bind = Desc<SgAdaFormalType, bool SgAdaFormalType::*, &SgAdaFormalType::p_is_private>;
35438};
35439template <> struct describe_field_t<SgAdaFormalType,SgType*,&SgAdaFormalType::p_formal_type> {
35440 using parent = SgAdaFormalType;
35441 using field_type = SgType*;
35442 static constexpr size_t position{1};
35443 static constexpr char const * const name{"formal_type"};
35444 static constexpr char const * const typestr{"SgType*"};
35445 static constexpr bool traverse{false};
35446 static constexpr auto mbr_ptr{&SgAdaFormalType::p_formal_type};
35447 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35448 using bind = Desc<SgAdaFormalType, SgType* SgAdaFormalType::*, &SgAdaFormalType::p_formal_type>;
35449};
35451 using node = SgAdaFormalType;
35452 using base = SgNamedType;
35453 static constexpr char const * const name{"AdaFormalType"};
35454 static constexpr unsigned long variant{909};
35455 static constexpr bool concrete{true};
35456 using subclasses_t = mp::List<>;
35458};
35459template <> struct node_from_variant_t<909> { using type = SgAdaFormalType; };
35460
35461// Class: AdaGenericSymbol
35462template <> struct describe_field_t<SgAdaGenericSymbol,SgDeclarationStatement*,&SgAdaGenericSymbol::p_declaration> {
35463 using parent = SgAdaGenericSymbol;
35465 static constexpr size_t position{0};
35466 static constexpr char const * const name{"declaration"};
35467 static constexpr char const * const typestr{"SgDeclarationStatement*"};
35468 static constexpr bool traverse{true};
35469 static constexpr auto mbr_ptr{&SgAdaGenericSymbol::p_declaration};
35470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35471 using bind = Desc<SgAdaGenericSymbol, SgDeclarationStatement* SgAdaGenericSymbol::*, &SgAdaGenericSymbol::p_declaration>;
35472};
35474 using node = SgAdaGenericSymbol;
35475 using base = SgSymbol;
35476 static constexpr char const * const name{"AdaGenericSymbol"};
35477 static constexpr unsigned long variant{910};
35478 static constexpr bool concrete{true};
35479 using subclasses_t = mp::List<>;
35481};
35482template <> struct node_from_variant_t<910> { using type = SgAdaGenericSymbol; };
35483
35484// Class: AdaFormalTypeDecl
35485template <> struct describe_field_t<SgAdaFormalTypeDecl,SgName,&SgAdaFormalTypeDecl::p_name> {
35487 using field_type = SgName;
35488 static constexpr size_t position{0};
35489 static constexpr char const * const name{"name"};
35490 static constexpr char const * const typestr{"SgName"};
35491 static constexpr bool traverse{false};
35492 static constexpr auto mbr_ptr{&SgAdaFormalTypeDecl::p_name};
35493 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35494 using bind = Desc<SgAdaFormalTypeDecl, SgName SgAdaFormalTypeDecl::*, &SgAdaFormalTypeDecl::p_name>;
35495};
35496template <> struct describe_field_t<SgAdaFormalTypeDecl,SgAdaFormalType*,&SgAdaFormalTypeDecl::p_type> {
35498 using field_type = SgAdaFormalType*;
35499 static constexpr size_t position{1};
35500 static constexpr char const * const name{"type"};
35501 static constexpr char const * const typestr{"SgAdaFormalType*"};
35502 static constexpr bool traverse{false};
35503 static constexpr auto mbr_ptr{&SgAdaFormalTypeDecl::p_type};
35504 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35505 using bind = Desc<SgAdaFormalTypeDecl, SgAdaFormalType* SgAdaFormalTypeDecl::*, &SgAdaFormalTypeDecl::p_type>;
35506};
35507template <> struct describe_field_t<SgAdaFormalTypeDecl,SgAdaParameterList*,&SgAdaFormalTypeDecl::p_discriminants> {
35510 static constexpr size_t position{2};
35511 static constexpr char const * const name{"discriminants"};
35512 static constexpr char const * const typestr{"SgAdaParameterList*"};
35513 static constexpr bool traverse{true};
35514 static constexpr auto mbr_ptr{&SgAdaFormalTypeDecl::p_discriminants};
35515 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35516 using bind = Desc<SgAdaFormalTypeDecl, SgAdaParameterList* SgAdaFormalTypeDecl::*, &SgAdaFormalTypeDecl::p_discriminants>;
35517};
35519 using node = SgAdaFormalTypeDecl;
35521 static constexpr char const * const name{"AdaFormalTypeDecl"};
35522 static constexpr unsigned long variant{911};
35523 static constexpr bool concrete{true};
35524 using subclasses_t = mp::List<>;
35526};
35527template <> struct node_from_variant_t<911> { using type = SgAdaFormalTypeDecl; };
35528
35529// Class: AdaUnitRefExp
35530template <> struct describe_field_t<SgAdaUnitRefExp,SgSymbol*,&SgAdaUnitRefExp::p_symbol> {
35531 using parent = SgAdaUnitRefExp;
35532 using field_type = SgSymbol*;
35533 static constexpr size_t position{0};
35534 static constexpr char const * const name{"symbol"};
35535 static constexpr char const * const typestr{"SgSymbol*"};
35536 static constexpr bool traverse{false};
35537 static constexpr auto mbr_ptr{&SgAdaUnitRefExp::p_symbol};
35538 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35539 using bind = Desc<SgAdaUnitRefExp, SgSymbol* SgAdaUnitRefExp::*, &SgAdaUnitRefExp::p_symbol>;
35540};
35542 using node = SgAdaUnitRefExp;
35543 using base = SgExpression;
35544 static constexpr char const * const name{"AdaUnitRefExp"};
35545 static constexpr unsigned long variant{912};
35546 static constexpr bool concrete{true};
35547 using subclasses_t = mp::List<>;
35549};
35550template <> struct node_from_variant_t<912> { using type = SgAdaUnitRefExp; };
35551
35552// Class: AdaDiscriminatedTypeDecl
35553template <> struct describe_field_t<SgAdaDiscriminatedTypeDecl,SgDeclarationScope*,&SgAdaDiscriminatedTypeDecl::p_discriminantScope> {
35556 static constexpr size_t position{0};
35557 static constexpr char const * const name{"discriminantScope"};
35558 static constexpr char const * const typestr{"SgDeclarationScope*"};
35559 static constexpr bool traverse{false};
35560 static constexpr auto mbr_ptr{&SgAdaDiscriminatedTypeDecl::p_discriminantScope};
35561 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35562 using bind = Desc<SgAdaDiscriminatedTypeDecl, SgDeclarationScope* SgAdaDiscriminatedTypeDecl::*, &SgAdaDiscriminatedTypeDecl::p_discriminantScope>;
35563};
35564template <> struct describe_field_t<SgAdaDiscriminatedTypeDecl,SgAdaParameterList*,&SgAdaDiscriminatedTypeDecl::p_discriminants> {
35567 static constexpr size_t position{1};
35568 static constexpr char const * const name{"discriminants"};
35569 static constexpr char const * const typestr{"SgAdaParameterList*"};
35570 static constexpr bool traverse{true};
35571 static constexpr auto mbr_ptr{&SgAdaDiscriminatedTypeDecl::p_discriminants};
35572 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35573 using bind = Desc<SgAdaDiscriminatedTypeDecl, SgAdaParameterList* SgAdaDiscriminatedTypeDecl::*, &SgAdaDiscriminatedTypeDecl::p_discriminants>;
35574};
35575template <> struct describe_field_t<SgAdaDiscriminatedTypeDecl,SgDeclarationStatement*,&SgAdaDiscriminatedTypeDecl::p_discriminatedDecl> {
35578 static constexpr size_t position{2};
35579 static constexpr char const * const name{"discriminatedDecl"};
35580 static constexpr char const * const typestr{"SgDeclarationStatement*"};
35581 static constexpr bool traverse{true};
35582 static constexpr auto mbr_ptr{&SgAdaDiscriminatedTypeDecl::p_discriminatedDecl};
35583 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35584 using bind = Desc<SgAdaDiscriminatedTypeDecl, SgDeclarationStatement* SgAdaDiscriminatedTypeDecl::*, &SgAdaDiscriminatedTypeDecl::p_discriminatedDecl>;
35585};
35586template <> struct describe_field_t<SgAdaDiscriminatedTypeDecl,SgAdaDiscriminatedType*,&SgAdaDiscriminatedTypeDecl::p_type> {
35589 static constexpr size_t position{3};
35590 static constexpr char const * const name{"type"};
35591 static constexpr char const * const typestr{"SgAdaDiscriminatedType*"};
35592 static constexpr bool traverse{false};
35593 static constexpr auto mbr_ptr{&SgAdaDiscriminatedTypeDecl::p_type};
35594 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35595 using bind = Desc<SgAdaDiscriminatedTypeDecl, SgAdaDiscriminatedType* SgAdaDiscriminatedTypeDecl::*, &SgAdaDiscriminatedTypeDecl::p_type>;
35596};
35606template <> struct node_from_variant_t<913> { using type = SgAdaDiscriminatedTypeDecl; };
35607
35608// Class: AdaDiscriminatedType
35611 using base = SgNamedType;
35612 static constexpr char const * const name{"AdaDiscriminatedType"};
35613 static constexpr unsigned long variant{914};
35614 static constexpr bool concrete{true};
35615 using subclasses_t = mp::List<>;
35616 using fields_t = mp::List<>;
35617};
35618template <> struct node_from_variant_t<914> { using type = SgAdaDiscriminatedType; };
35619
35620// Class: AdaDiscriminantConstraint
35621template <> struct describe_field_t<SgAdaDiscriminantConstraint,SgExpressionPtrList,&SgAdaDiscriminantConstraint::p_discriminants> {
35623 using field_type = SgExpressionPtrList;
35624 static constexpr size_t position{0};
35625 static constexpr char const * const name{"discriminants"};
35626 static constexpr char const * const typestr{"SgExpressionPtrList"};
35627 static constexpr bool traverse{true};
35628 static constexpr auto mbr_ptr{&SgAdaDiscriminantConstraint::p_discriminants};
35629 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35630 using bind = Desc<SgAdaDiscriminantConstraint, SgExpressionPtrList SgAdaDiscriminantConstraint::*, &SgAdaDiscriminantConstraint::p_discriminants>;
35631};
35634 using base = SgAdaTypeConstraint;
35635 static constexpr char const * const name{"AdaDiscriminantConstraint"};
35636 static constexpr unsigned long variant{915};
35637 static constexpr bool concrete{true};
35638 using subclasses_t = mp::List<>;
35640};
35641template <> struct node_from_variant_t<915> { using type = SgAdaDiscriminantConstraint; };
35642
35643// Class: AdaGenericInstanceDecl
35644template <> struct describe_field_t<SgAdaGenericInstanceDecl,SgName,&SgAdaGenericInstanceDecl::p_name> {
35646 using field_type = SgName;
35647 static constexpr size_t position{0};
35648 static constexpr char const * const name{"name"};
35649 static constexpr char const * const typestr{"SgName"};
35650 static constexpr bool traverse{false};
35651 static constexpr auto mbr_ptr{&SgAdaGenericInstanceDecl::p_name};
35652 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35653 using bind = Desc<SgAdaGenericInstanceDecl, SgName SgAdaGenericInstanceDecl::*, &SgAdaGenericInstanceDecl::p_name>;
35654};
35655template <> struct describe_field_t<SgAdaGenericInstanceDecl,SgDeclarationStatement*,&SgAdaGenericInstanceDecl::p_genericDeclaration> {
35658 static constexpr size_t position{1};
35659 static constexpr char const * const name{"genericDeclaration"};
35660 static constexpr char const * const typestr{"SgDeclarationStatement*"};
35661 static constexpr bool traverse{false};
35662 static constexpr auto mbr_ptr{&SgAdaGenericInstanceDecl::p_genericDeclaration};
35663 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35664 using bind = Desc<SgAdaGenericInstanceDecl, SgDeclarationStatement* SgAdaGenericInstanceDecl::*, &SgAdaGenericInstanceDecl::p_genericDeclaration>;
35665};
35666template <> struct describe_field_t<SgAdaGenericInstanceDecl,SgScopeStatement*,&SgAdaGenericInstanceDecl::p_instantiatedScope> {
35669 static constexpr size_t position{2};
35670 static constexpr char const * const name{"instantiatedScope"};
35671 static constexpr char const * const typestr{"SgScopeStatement*"};
35672 static constexpr bool traverse{true};
35673 static constexpr auto mbr_ptr{&SgAdaGenericInstanceDecl::p_instantiatedScope};
35674 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35675 using bind = Desc<SgAdaGenericInstanceDecl, SgScopeStatement* SgAdaGenericInstanceDecl::*, &SgAdaGenericInstanceDecl::p_instantiatedScope>;
35676};
35677template <> struct describe_field_t<SgAdaGenericInstanceDecl,SgExprListExp*,&SgAdaGenericInstanceDecl::p_actual_parameters> {
35679 using field_type = SgExprListExp*;
35680 static constexpr size_t position{3};
35681 static constexpr char const * const name{"actual_parameters"};
35682 static constexpr char const * const typestr{"SgExprListExp*"};
35683 static constexpr bool traverse{true};
35684 static constexpr auto mbr_ptr{&SgAdaGenericInstanceDecl::p_actual_parameters};
35685 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35686 using bind = Desc<SgAdaGenericInstanceDecl, SgExprListExp* SgAdaGenericInstanceDecl::*, &SgAdaGenericInstanceDecl::p_actual_parameters>;
35687};
35688template <> struct describe_field_t<SgAdaGenericInstanceDecl,SgScopeStatement*,&SgAdaGenericInstanceDecl::p_scope> {
35691 static constexpr size_t position{4};
35692 static constexpr char const * const name{"scope"};
35693 static constexpr char const * const typestr{"SgScopeStatement*"};
35694 static constexpr bool traverse{false};
35695 static constexpr auto mbr_ptr{&SgAdaGenericInstanceDecl::p_scope};
35696 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35697 using bind = Desc<SgAdaGenericInstanceDecl, SgScopeStatement* SgAdaGenericInstanceDecl::*, &SgAdaGenericInstanceDecl::p_scope>;
35698};
35708template <> struct node_from_variant_t<916> { using type = SgAdaGenericInstanceDecl; };
35709
35710// Class: AdaUnscopedBlock
35711template <> struct describe_field_t<SgAdaUnscopedBlock,SgStatementPtrList,&SgAdaUnscopedBlock::p_statements> {
35712 using parent = SgAdaUnscopedBlock;
35713 using field_type = SgStatementPtrList;
35714 static constexpr size_t position{0};
35715 static constexpr char const * const name{"statements"};
35716 static constexpr char const * const typestr{"SgStatementPtrList"};
35717 static constexpr bool traverse{true};
35718 static constexpr auto mbr_ptr{&SgAdaUnscopedBlock::p_statements};
35719 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35720 using bind = Desc<SgAdaUnscopedBlock, SgStatementPtrList SgAdaUnscopedBlock::*, &SgAdaUnscopedBlock::p_statements>;
35721};
35723 using node = SgAdaUnscopedBlock;
35724 using base = SgStatement;
35725 static constexpr char const * const name{"AdaUnscopedBlock"};
35726 static constexpr unsigned long variant{917};
35727 static constexpr bool concrete{true};
35728 using subclasses_t = mp::List<>;
35730};
35731template <> struct node_from_variant_t<917> { using type = SgAdaUnscopedBlock; };
35732
35733// Class: AdaInheritedFunctionSymbol
35734template <> struct describe_field_t<SgAdaInheritedFunctionSymbol,SgFunctionType*,&SgAdaInheritedFunctionSymbol::p_derivedFunctionType> {
35736 using field_type = SgFunctionType*;
35737 static constexpr size_t position{0};
35738 static constexpr char const * const name{"derivedFunctionType"};
35739 static constexpr char const * const typestr{"SgFunctionType*"};
35740 static constexpr bool traverse{false};
35741 static constexpr auto mbr_ptr{&SgAdaInheritedFunctionSymbol::p_derivedFunctionType};
35742 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35743 using bind = Desc<SgAdaInheritedFunctionSymbol, SgFunctionType* SgAdaInheritedFunctionSymbol::*, &SgAdaInheritedFunctionSymbol::p_derivedFunctionType>;
35744};
35745template <> struct describe_field_t<SgAdaInheritedFunctionSymbol,SgNamedType*,&SgAdaInheritedFunctionSymbol::p_associatedDerivedType> {
35747 using field_type = SgNamedType*;
35748 static constexpr size_t position{1};
35749 static constexpr char const * const name{"associatedDerivedType"};
35750 static constexpr char const * const typestr{"SgNamedType*"};
35751 static constexpr bool traverse{false};
35752 static constexpr auto mbr_ptr{&SgAdaInheritedFunctionSymbol::p_associatedDerivedType};
35753 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35754 using bind = Desc<SgAdaInheritedFunctionSymbol, SgNamedType* SgAdaInheritedFunctionSymbol::*, &SgAdaInheritedFunctionSymbol::p_associatedDerivedType>;
35755};
35756template <> struct describe_field_t<SgAdaInheritedFunctionSymbol,SgFunctionSymbol*,&SgAdaInheritedFunctionSymbol::p_publiclyVisibleFunctionSymbol> {
35759 static constexpr size_t position{2};
35760 static constexpr char const * const name{"publiclyVisibleFunctionSymbol"};
35761 static constexpr char const * const typestr{"SgFunctionSymbol*"};
35762 static constexpr bool traverse{false};
35763 static constexpr auto mbr_ptr{&SgAdaInheritedFunctionSymbol::p_publiclyVisibleFunctionSymbol};
35764 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35765 using bind = Desc<SgAdaInheritedFunctionSymbol, SgFunctionSymbol* SgAdaInheritedFunctionSymbol::*, &SgAdaInheritedFunctionSymbol::p_publiclyVisibleFunctionSymbol>;
35766};
35776template <> struct node_from_variant_t<918> { using type = SgAdaInheritedFunctionSymbol; };
35777
35778// Class: AdaProtectedBody
35779template <> struct describe_field_t<SgAdaProtectedBody,SgAdaProtectedSpec*,&SgAdaProtectedBody::p_spec> {
35780 using parent = SgAdaProtectedBody;
35782 static constexpr size_t position{0};
35783 static constexpr char const * const name{"spec"};
35784 static constexpr char const * const typestr{"SgAdaProtectedSpec*"};
35785 static constexpr bool traverse{false};
35786 static constexpr auto mbr_ptr{&SgAdaProtectedBody::p_spec};
35787 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35788 using bind = Desc<SgAdaProtectedBody, SgAdaProtectedSpec* SgAdaProtectedBody::*, &SgAdaProtectedBody::p_spec>;
35789};
35790template <> struct describe_field_t<SgAdaProtectedBody,SgStatementPtrList,&SgAdaProtectedBody::p_statements> {
35791 using parent = SgAdaProtectedBody;
35792 using field_type = SgStatementPtrList;
35793 static constexpr size_t position{1};
35794 static constexpr char const * const name{"statements"};
35795 static constexpr char const * const typestr{"SgStatementPtrList"};
35796 static constexpr bool traverse{true};
35797 static constexpr auto mbr_ptr{&SgAdaProtectedBody::p_statements};
35798 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35799 using bind = Desc<SgAdaProtectedBody, SgStatementPtrList SgAdaProtectedBody::*, &SgAdaProtectedBody::p_statements>;
35800};
35802 using node = SgAdaProtectedBody;
35803 using base = SgScopeStatement;
35804 static constexpr char const * const name{"AdaProtectedBody"};
35805 static constexpr unsigned long variant{919};
35806 static constexpr bool concrete{true};
35807 using subclasses_t = mp::List<>;
35809};
35810template <> struct node_from_variant_t<919> { using type = SgAdaProtectedBody; };
35811
35812// Class: AdaProtectedBodyDecl
35813template <> struct describe_field_t<SgAdaProtectedBodyDecl,SgName,&SgAdaProtectedBodyDecl::p_name> {
35815 using field_type = SgName;
35816 static constexpr size_t position{0};
35817 static constexpr char const * const name{"name"};
35818 static constexpr char const * const typestr{"SgName"};
35819 static constexpr bool traverse{false};
35820 static constexpr auto mbr_ptr{&SgAdaProtectedBodyDecl::p_name};
35821 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35822 using bind = Desc<SgAdaProtectedBodyDecl, SgName SgAdaProtectedBodyDecl::*, &SgAdaProtectedBodyDecl::p_name>;
35823};
35824template <> struct describe_field_t<SgAdaProtectedBodyDecl,SgDeclarationStatement*,&SgAdaProtectedBodyDecl::p_specificationDeclaration> {
35827 static constexpr size_t position{1};
35828 static constexpr char const * const name{"specificationDeclaration"};
35829 static constexpr char const * const typestr{"SgDeclarationStatement*"};
35830 static constexpr bool traverse{false};
35831 static constexpr auto mbr_ptr{&SgAdaProtectedBodyDecl::p_specificationDeclaration};
35832 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35833 using bind = Desc<SgAdaProtectedBodyDecl, SgDeclarationStatement* SgAdaProtectedBodyDecl::*, &SgAdaProtectedBodyDecl::p_specificationDeclaration>;
35834};
35835template <> struct describe_field_t<SgAdaProtectedBodyDecl,SgAdaProtectedBody*,&SgAdaProtectedBodyDecl::p_definition> {
35838 static constexpr size_t position{2};
35839 static constexpr char const * const name{"definition"};
35840 static constexpr char const * const typestr{"SgAdaProtectedBody*"};
35841 static constexpr bool traverse{true};
35842 static constexpr auto mbr_ptr{&SgAdaProtectedBodyDecl::p_definition};
35843 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35844 using bind = Desc<SgAdaProtectedBodyDecl, SgAdaProtectedBody* SgAdaProtectedBodyDecl::*, &SgAdaProtectedBodyDecl::p_definition>;
35845};
35855template <> struct node_from_variant_t<920> { using type = SgAdaProtectedBodyDecl; };
35856
35857// Class: AdaProtectedSpec
35858template <> struct describe_field_t<SgAdaProtectedSpec,SgAdaProtectedBody*,&SgAdaProtectedSpec::p_body> {
35859 using parent = SgAdaProtectedSpec;
35861 static constexpr size_t position{0};
35862 static constexpr char const * const name{"body"};
35863 static constexpr char const * const typestr{"SgAdaProtectedBody*"};
35864 static constexpr bool traverse{false};
35865 static constexpr auto mbr_ptr{&SgAdaProtectedSpec::p_body};
35866 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35867 using bind = Desc<SgAdaProtectedSpec, SgAdaProtectedBody* SgAdaProtectedSpec::*, &SgAdaProtectedSpec::p_body>;
35868};
35869template <> struct describe_field_t<SgAdaProtectedSpec,SgDeclarationStatementPtrList,&SgAdaProtectedSpec::p_declarations> {
35870 using parent = SgAdaProtectedSpec;
35871 using field_type = SgDeclarationStatementPtrList;
35872 static constexpr size_t position{1};
35873 static constexpr char const * const name{"declarations"};
35874 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
35875 static constexpr bool traverse{true};
35876 static constexpr auto mbr_ptr{&SgAdaProtectedSpec::p_declarations};
35877 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35878 using bind = Desc<SgAdaProtectedSpec, SgDeclarationStatementPtrList SgAdaProtectedSpec::*, &SgAdaProtectedSpec::p_declarations>;
35879};
35880template <> struct describe_field_t<SgAdaProtectedSpec,bool,&SgAdaProtectedSpec::p_hasPrivate> {
35881 using parent = SgAdaProtectedSpec;
35882 using field_type = bool;
35883 static constexpr size_t position{2};
35884 static constexpr char const * const name{"hasPrivate"};
35885 static constexpr char const * const typestr{"bool"};
35886 static constexpr bool traverse{false};
35887 static constexpr auto mbr_ptr{&SgAdaProtectedSpec::p_hasPrivate};
35888 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35889 using bind = Desc<SgAdaProtectedSpec, bool SgAdaProtectedSpec::*, &SgAdaProtectedSpec::p_hasPrivate>;
35890};
35892 using node = SgAdaProtectedSpec;
35893 using base = SgScopeStatement;
35894 static constexpr char const * const name{"AdaProtectedSpec"};
35895 static constexpr unsigned long variant{921};
35896 static constexpr bool concrete{true};
35897 using subclasses_t = mp::List<>;
35899};
35900template <> struct node_from_variant_t<921> { using type = SgAdaProtectedSpec; };
35901
35902// Class: AdaProtectedSpecDecl
35903template <> struct describe_field_t<SgAdaProtectedSpecDecl,SgName,&SgAdaProtectedSpecDecl::p_name> {
35905 using field_type = SgName;
35906 static constexpr size_t position{0};
35907 static constexpr char const * const name{"name"};
35908 static constexpr char const * const typestr{"SgName"};
35909 static constexpr bool traverse{false};
35910 static constexpr auto mbr_ptr{&SgAdaProtectedSpecDecl::p_name};
35911 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35912 using bind = Desc<SgAdaProtectedSpecDecl, SgName SgAdaProtectedSpecDecl::*, &SgAdaProtectedSpecDecl::p_name>;
35913};
35914template <> struct describe_field_t<SgAdaProtectedSpecDecl,SgAdaProtectedSpec*,&SgAdaProtectedSpecDecl::p_definition> {
35917 static constexpr size_t position{1};
35918 static constexpr char const * const name{"definition"};
35919 static constexpr char const * const typestr{"SgAdaProtectedSpec*"};
35920 static constexpr bool traverse{true};
35921 static constexpr auto mbr_ptr{&SgAdaProtectedSpecDecl::p_definition};
35922 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35923 using bind = Desc<SgAdaProtectedSpecDecl, SgAdaProtectedSpec* SgAdaProtectedSpecDecl::*, &SgAdaProtectedSpecDecl::p_definition>;
35924};
35925template <> struct describe_field_t<SgAdaProtectedSpecDecl,SgAdaProtectedType*,&SgAdaProtectedSpecDecl::p_type> {
35928 static constexpr size_t position{2};
35929 static constexpr char const * const name{"type"};
35930 static constexpr char const * const typestr{"SgAdaProtectedType*"};
35931 static constexpr bool traverse{false};
35932 static constexpr auto mbr_ptr{&SgAdaProtectedSpecDecl::p_type};
35933 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35934 using bind = Desc<SgAdaProtectedSpecDecl, SgAdaProtectedType* SgAdaProtectedSpecDecl::*, &SgAdaProtectedSpecDecl::p_type>;
35935};
35939 static constexpr char const * const name{"AdaProtectedSpecDecl"};
35940 static constexpr unsigned long variant{922};
35941 static constexpr bool concrete{true};
35942 using subclasses_t = mp::List<>;
35944};
35945template <> struct node_from_variant_t<922> { using type = SgAdaProtectedSpecDecl; };
35946
35947// Class: AdaProtectedSymbol
35948template <> struct describe_field_t<SgAdaProtectedSymbol,SgDeclarationStatement*,&SgAdaProtectedSymbol::p_declaration> {
35951 static constexpr size_t position{0};
35952 static constexpr char const * const name{"declaration"};
35953 static constexpr char const * const typestr{"SgDeclarationStatement*"};
35954 static constexpr bool traverse{true};
35955 static constexpr auto mbr_ptr{&SgAdaProtectedSymbol::p_declaration};
35956 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35957 using bind = Desc<SgAdaProtectedSymbol, SgDeclarationStatement* SgAdaProtectedSymbol::*, &SgAdaProtectedSymbol::p_declaration>;
35958};
35960 using node = SgAdaProtectedSymbol;
35961 using base = SgSymbol;
35962 static constexpr char const * const name{"AdaProtectedSymbol"};
35963 static constexpr unsigned long variant{923};
35964 static constexpr bool concrete{true};
35965 using subclasses_t = mp::List<>;
35967};
35968template <> struct node_from_variant_t<923> { using type = SgAdaProtectedSymbol; };
35969
35970// Class: AdaProtectedRefExp
35971template <> struct describe_field_t<SgAdaProtectedRefExp,SgAdaProtectedSymbol*,&SgAdaProtectedRefExp::p_symbol> {
35974 static constexpr size_t position{0};
35975 static constexpr char const * const name{"symbol"};
35976 static constexpr char const * const typestr{"SgAdaProtectedSymbol*"};
35977 static constexpr bool traverse{false};
35978 static constexpr auto mbr_ptr{&SgAdaProtectedRefExp::p_symbol};
35979 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
35980 using bind = Desc<SgAdaProtectedRefExp, SgAdaProtectedSymbol* SgAdaProtectedRefExp::*, &SgAdaProtectedRefExp::p_symbol>;
35981};
35983 using node = SgAdaProtectedRefExp;
35984 using base = SgExpression;
35985 static constexpr char const * const name{"AdaProtectedRefExp"};
35986 static constexpr unsigned long variant{924};
35987 static constexpr bool concrete{true};
35988 using subclasses_t = mp::List<>;
35990};
35991template <> struct node_from_variant_t<924> { using type = SgAdaProtectedRefExp; };
35992
35993// Class: AdaProtectedType
35995 using node = SgAdaProtectedType;
35996 using base = SgNamedType;
35997 static constexpr char const * const name{"AdaProtectedType"};
35998 static constexpr unsigned long variant{925};
35999 static constexpr bool concrete{true};
36000 using subclasses_t = mp::List<>;
36001 using fields_t = mp::List<>;
36002};
36003template <> struct node_from_variant_t<925> { using type = SgAdaProtectedType; };
36004
36005// Class: AdaProtectedTypeDecl
36006template <> struct describe_field_t<SgAdaProtectedTypeDecl,SgName,&SgAdaProtectedTypeDecl::p_name> {
36008 using field_type = SgName;
36009 static constexpr size_t position{0};
36010 static constexpr char const * const name{"name"};
36011 static constexpr char const * const typestr{"SgName"};
36012 static constexpr bool traverse{false};
36013 static constexpr auto mbr_ptr{&SgAdaProtectedTypeDecl::p_name};
36014 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36015 using bind = Desc<SgAdaProtectedTypeDecl, SgName SgAdaProtectedTypeDecl::*, &SgAdaProtectedTypeDecl::p_name>;
36016};
36017template <> struct describe_field_t<SgAdaProtectedTypeDecl,SgAdaProtectedSpec*,&SgAdaProtectedTypeDecl::p_definition> {
36020 static constexpr size_t position{1};
36021 static constexpr char const * const name{"definition"};
36022 static constexpr char const * const typestr{"SgAdaProtectedSpec*"};
36023 static constexpr bool traverse{true};
36024 static constexpr auto mbr_ptr{&SgAdaProtectedTypeDecl::p_definition};
36025 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36026 using bind = Desc<SgAdaProtectedTypeDecl, SgAdaProtectedSpec* SgAdaProtectedTypeDecl::*, &SgAdaProtectedTypeDecl::p_definition>;
36027};
36028template <> struct describe_field_t<SgAdaProtectedTypeDecl,SgAdaProtectedType*,&SgAdaProtectedTypeDecl::p_type> {
36031 static constexpr size_t position{2};
36032 static constexpr char const * const name{"type"};
36033 static constexpr char const * const typestr{"SgAdaProtectedType*"};
36034 static constexpr bool traverse{false};
36035 static constexpr auto mbr_ptr{&SgAdaProtectedTypeDecl::p_type};
36036 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36037 using bind = Desc<SgAdaProtectedTypeDecl, SgAdaProtectedType* SgAdaProtectedTypeDecl::*, &SgAdaProtectedTypeDecl::p_type>;
36038};
36039template <> struct describe_field_t<SgAdaProtectedTypeDecl,SgScopeStatement*,&SgAdaProtectedTypeDecl::p_scope> {
36042 static constexpr size_t position{3};
36043 static constexpr char const * const name{"scope"};
36044 static constexpr char const * const typestr{"SgScopeStatement*"};
36045 static constexpr bool traverse{false};
36046 static constexpr auto mbr_ptr{&SgAdaProtectedTypeDecl::p_scope};
36047 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36048 using bind = Desc<SgAdaProtectedTypeDecl, SgScopeStatement* SgAdaProtectedTypeDecl::*, &SgAdaProtectedTypeDecl::p_scope>;
36049};
36059template <> struct node_from_variant_t<926> { using type = SgAdaProtectedTypeDecl; };
36060
36061// Class: AdaDigitsConstraint
36062template <> struct describe_field_t<SgAdaDigitsConstraint,SgExpression*,&SgAdaDigitsConstraint::p_digits> {
36064 using field_type = SgExpression*;
36065 static constexpr size_t position{0};
36066 static constexpr char const * const name{"digits"};
36067 static constexpr char const * const typestr{"SgExpression*"};
36068 static constexpr bool traverse{true};
36069 static constexpr auto mbr_ptr{&SgAdaDigitsConstraint::p_digits};
36070 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36071 using bind = Desc<SgAdaDigitsConstraint, SgExpression* SgAdaDigitsConstraint::*, &SgAdaDigitsConstraint::p_digits>;
36072};
36073template <> struct describe_field_t<SgAdaDigitsConstraint,SgAdaTypeConstraint*,&SgAdaDigitsConstraint::p_subConstraint> {
36076 static constexpr size_t position{1};
36077 static constexpr char const * const name{"subConstraint"};
36078 static constexpr char const * const typestr{"SgAdaTypeConstraint*"};
36079 static constexpr bool traverse{true};
36080 static constexpr auto mbr_ptr{&SgAdaDigitsConstraint::p_subConstraint};
36081 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36082 using bind = Desc<SgAdaDigitsConstraint, SgAdaTypeConstraint* SgAdaDigitsConstraint::*, &SgAdaDigitsConstraint::p_subConstraint>;
36083};
36086 using base = SgAdaTypeConstraint;
36087 static constexpr char const * const name{"AdaDigitsConstraint"};
36088 static constexpr unsigned long variant{927};
36089 static constexpr bool concrete{true};
36090 using subclasses_t = mp::List<>;
36092};
36093template <> struct node_from_variant_t<927> { using type = SgAdaDigitsConstraint; };
36094
36095// Class: AdaAncestorInitializer
36096template <> struct describe_field_t<SgAdaAncestorInitializer,SgExpression*,&SgAdaAncestorInitializer::p_ancestor> {
36098 using field_type = SgExpression*;
36099 static constexpr size_t position{0};
36100 static constexpr char const * const name{"ancestor"};
36101 static constexpr char const * const typestr{"SgExpression*"};
36102 static constexpr bool traverse{true};
36103 static constexpr auto mbr_ptr{&SgAdaAncestorInitializer::p_ancestor};
36104 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36105 using bind = Desc<SgAdaAncestorInitializer, SgExpression* SgAdaAncestorInitializer::*, &SgAdaAncestorInitializer::p_ancestor>;
36106};
36109 using base = SgInitializer;
36110 static constexpr char const * const name{"AdaAncestorInitializer"};
36111 static constexpr unsigned long variant{928};
36112 static constexpr bool concrete{true};
36113 using subclasses_t = mp::List<>;
36115};
36116template <> struct node_from_variant_t<928> { using type = SgAdaAncestorInitializer; };
36117
36118// Class: AdaDeltaConstraint
36119template <> struct describe_field_t<SgAdaDeltaConstraint,SgExpression*,&SgAdaDeltaConstraint::p_delta> {
36121 using field_type = SgExpression*;
36122 static constexpr size_t position{0};
36123 static constexpr char const * const name{"delta"};
36124 static constexpr char const * const typestr{"SgExpression*"};
36125 static constexpr bool traverse{true};
36126 static constexpr auto mbr_ptr{&SgAdaDeltaConstraint::p_delta};
36127 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36128 using bind = Desc<SgAdaDeltaConstraint, SgExpression* SgAdaDeltaConstraint::*, &SgAdaDeltaConstraint::p_delta>;
36129};
36130template <> struct describe_field_t<SgAdaDeltaConstraint,SgAdaTypeConstraint*,&SgAdaDeltaConstraint::p_subConstraint> {
36133 static constexpr size_t position{1};
36134 static constexpr char const * const name{"subConstraint"};
36135 static constexpr char const * const typestr{"SgAdaTypeConstraint*"};
36136 static constexpr bool traverse{true};
36137 static constexpr auto mbr_ptr{&SgAdaDeltaConstraint::p_subConstraint};
36138 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36139 using bind = Desc<SgAdaDeltaConstraint, SgAdaTypeConstraint* SgAdaDeltaConstraint::*, &SgAdaDeltaConstraint::p_subConstraint>;
36140};
36141template <> struct describe_field_t<SgAdaDeltaConstraint,bool,&SgAdaDeltaConstraint::p_isDecimal> {
36143 using field_type = bool;
36144 static constexpr size_t position{2};
36145 static constexpr char const * const name{"isDecimal"};
36146 static constexpr char const * const typestr{"bool"};
36147 static constexpr bool traverse{false};
36148 static constexpr auto mbr_ptr{&SgAdaDeltaConstraint::p_isDecimal};
36149 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36150 using bind = Desc<SgAdaDeltaConstraint, bool SgAdaDeltaConstraint::*, &SgAdaDeltaConstraint::p_isDecimal>;
36151};
36153 using node = SgAdaDeltaConstraint;
36154 using base = SgAdaTypeConstraint;
36155 static constexpr char const * const name{"AdaDeltaConstraint"};
36156 static constexpr unsigned long variant{929};
36157 static constexpr bool concrete{true};
36158 using subclasses_t = mp::List<>;
36160};
36161template <> struct node_from_variant_t<929> { using type = SgAdaDeltaConstraint; };
36162
36163// Class: AdaSubroutineType
36164template <> struct describe_field_t<SgAdaSubroutineType,SgFunctionParameterList*,&SgAdaSubroutineType::p_parameterList> {
36167 static constexpr size_t position{0};
36168 static constexpr char const * const name{"parameterList"};
36169 static constexpr char const * const typestr{"SgFunctionParameterList*"};
36170 static constexpr bool traverse{true};
36171 static constexpr auto mbr_ptr{&SgAdaSubroutineType::p_parameterList};
36172 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36173 using bind = Desc<SgAdaSubroutineType, SgFunctionParameterList* SgAdaSubroutineType::*, &SgAdaSubroutineType::p_parameterList>;
36174};
36175template <> struct describe_field_t<SgAdaSubroutineType,SgFunctionParameterScope*,&SgAdaSubroutineType::p_functionParameterScope> {
36178 static constexpr size_t position{1};
36179 static constexpr char const * const name{"functionParameterScope"};
36180 static constexpr char const * const typestr{"SgFunctionParameterScope*"};
36181 static constexpr bool traverse{false};
36182 static constexpr auto mbr_ptr{&SgAdaSubroutineType::p_functionParameterScope};
36183 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36184 using bind = Desc<SgAdaSubroutineType, SgFunctionParameterScope* SgAdaSubroutineType::*, &SgAdaSubroutineType::p_functionParameterScope>;
36185};
36186template <> struct describe_field_t<SgAdaSubroutineType,SgType*,&SgAdaSubroutineType::p_return_type> {
36188 using field_type = SgType*;
36189 static constexpr size_t position{2};
36190 static constexpr char const * const name{"return_type"};
36191 static constexpr char const * const typestr{"SgType*"};
36192 static constexpr bool traverse{true};
36193 static constexpr auto mbr_ptr{&SgAdaSubroutineType::p_return_type};
36194 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36195 using bind = Desc<SgAdaSubroutineType, SgType* SgAdaSubroutineType::*, &SgAdaSubroutineType::p_return_type>;
36196};
36197template <> struct describe_field_t<SgAdaSubroutineType,bool,&SgAdaSubroutineType::p_is_protected> {
36199 using field_type = bool;
36200 static constexpr size_t position{3};
36201 static constexpr char const * const name{"is_protected"};
36202 static constexpr char const * const typestr{"bool"};
36203 static constexpr bool traverse{false};
36204 static constexpr auto mbr_ptr{&SgAdaSubroutineType::p_is_protected};
36205 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36206 using bind = Desc<SgAdaSubroutineType, bool SgAdaSubroutineType::*, &SgAdaSubroutineType::p_is_protected>;
36207};
36217template <> struct node_from_variant_t<930> { using type = SgAdaSubroutineType; };
36218
36219// Class: AdaGenericInstanceSymbol
36220template <> struct describe_field_t<SgAdaGenericInstanceSymbol,SgAdaGenericInstanceDecl*,&SgAdaGenericInstanceSymbol::p_declaration> {
36223 static constexpr size_t position{0};
36224 static constexpr char const * const name{"declaration"};
36225 static constexpr char const * const typestr{"SgAdaGenericInstanceDecl*"};
36226 static constexpr bool traverse{true};
36227 static constexpr auto mbr_ptr{&SgAdaGenericInstanceSymbol::p_declaration};
36228 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36229 using bind = Desc<SgAdaGenericInstanceSymbol, SgAdaGenericInstanceDecl* SgAdaGenericInstanceSymbol::*, &SgAdaGenericInstanceSymbol::p_declaration>;
36230};
36233 using base = SgSymbol;
36234 static constexpr char const * const name{"AdaGenericInstanceSymbol"};
36235 static constexpr unsigned long variant{931};
36236 static constexpr bool concrete{true};
36237 using subclasses_t = mp::List<>;
36239};
36240template <> struct node_from_variant_t<931> { using type = SgAdaGenericInstanceSymbol; };
36241
36242// Class: AdaFormalPackageDecl
36243template <> struct describe_field_t<SgAdaFormalPackageDecl,SgName,&SgAdaFormalPackageDecl::p_name> {
36245 using field_type = SgName;
36246 static constexpr size_t position{0};
36247 static constexpr char const * const name{"name"};
36248 static constexpr char const * const typestr{"SgName"};
36249 static constexpr bool traverse{false};
36250 static constexpr auto mbr_ptr{&SgAdaFormalPackageDecl::p_name};
36251 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36252 using bind = Desc<SgAdaFormalPackageDecl, SgName SgAdaFormalPackageDecl::*, &SgAdaFormalPackageDecl::p_name>;
36253};
36254template <> struct describe_field_t<SgAdaFormalPackageDecl,SgDeclarationStatement*,&SgAdaFormalPackageDecl::p_declaration> {
36257 static constexpr size_t position{1};
36258 static constexpr char const * const name{"declaration"};
36259 static constexpr char const * const typestr{"SgDeclarationStatement*"};
36260 static constexpr bool traverse{false};
36261 static constexpr auto mbr_ptr{&SgAdaFormalPackageDecl::p_declaration};
36262 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36263 using bind = Desc<SgAdaFormalPackageDecl, SgDeclarationStatement* SgAdaFormalPackageDecl::*, &SgAdaFormalPackageDecl::p_declaration>;
36264};
36265template <> struct describe_field_t<SgAdaFormalPackageDecl,SgExprListExp*,&SgAdaFormalPackageDecl::p_actual_parameters> {
36267 using field_type = SgExprListExp*;
36268 static constexpr size_t position{2};
36269 static constexpr char const * const name{"actual_parameters"};
36270 static constexpr char const * const typestr{"SgExprListExp*"};
36271 static constexpr bool traverse{false};
36272 static constexpr auto mbr_ptr{&SgAdaFormalPackageDecl::p_actual_parameters};
36273 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36274 using bind = Desc<SgAdaFormalPackageDecl, SgExprListExp* SgAdaFormalPackageDecl::*, &SgAdaFormalPackageDecl::p_actual_parameters>;
36275};
36276template <> struct describe_field_t<SgAdaFormalPackageDecl,SgDeclarationStatement*,&SgAdaFormalPackageDecl::p_prototype> {
36279 static constexpr size_t position{3};
36280 static constexpr char const * const name{"prototype"};
36281 static constexpr char const * const typestr{"SgDeclarationStatement*"};
36282 static constexpr bool traverse{false};
36283 static constexpr auto mbr_ptr{&SgAdaFormalPackageDecl::p_prototype};
36284 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36285 using bind = Desc<SgAdaFormalPackageDecl, SgDeclarationStatement* SgAdaFormalPackageDecl::*, &SgAdaFormalPackageDecl::p_prototype>;
36286};
36287template <> struct describe_field_t<SgAdaFormalPackageDecl,SgScopeStatement*,&SgAdaFormalPackageDecl::p_prototypeScope> {
36290 static constexpr size_t position{4};
36291 static constexpr char const * const name{"prototypeScope"};
36292 static constexpr char const * const typestr{"SgScopeStatement*"};
36293 static constexpr bool traverse{false};
36294 static constexpr auto mbr_ptr{&SgAdaFormalPackageDecl::p_prototypeScope};
36295 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36296 using bind = Desc<SgAdaFormalPackageDecl, SgScopeStatement* SgAdaFormalPackageDecl::*, &SgAdaFormalPackageDecl::p_prototypeScope>;
36297};
36307template <> struct node_from_variant_t<932> { using type = SgAdaFormalPackageDecl; };
36308
36309// Class: AdaFormalPackageSymbol
36310template <> struct describe_field_t<SgAdaFormalPackageSymbol,SgAdaFormalPackageDecl*,&SgAdaFormalPackageSymbol::p_declaration> {
36313 static constexpr size_t position{0};
36314 static constexpr char const * const name{"declaration"};
36315 static constexpr char const * const typestr{"SgAdaFormalPackageDecl*"};
36316 static constexpr bool traverse{true};
36317 static constexpr auto mbr_ptr{&SgAdaFormalPackageSymbol::p_declaration};
36318 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36319 using bind = Desc<SgAdaFormalPackageSymbol, SgAdaFormalPackageDecl* SgAdaFormalPackageSymbol::*, &SgAdaFormalPackageSymbol::p_declaration>;
36320};
36323 using base = SgSymbol;
36324 static constexpr char const * const name{"AdaFormalPackageSymbol"};
36325 static constexpr unsigned long variant{933};
36326 static constexpr bool concrete{true};
36327 using subclasses_t = mp::List<>;
36329};
36330template <> struct node_from_variant_t<933> { using type = SgAdaFormalPackageSymbol; };
36331
36332// Class: AsmJvmAttributeTable
36333template <> struct describe_field_t<SgAsmJvmAttributeTable,SgAsmJvmAttributePtrList,&SgAsmJvmAttributeTable::p_attributes> {
36335 using field_type = SgAsmJvmAttributePtrList;
36336 static constexpr size_t position{0};
36337 static constexpr char const * const name{"attributes"};
36338 static constexpr char const * const typestr{"SgAsmJvmAttributePtrList"};
36339 static constexpr bool traverse{true};
36340 static constexpr auto mbr_ptr{&SgAsmJvmAttributeTable::p_attributes};
36341 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36342 using bind = Desc<SgAsmJvmAttributeTable, SgAsmJvmAttributePtrList SgAsmJvmAttributeTable::*, &SgAsmJvmAttributeTable::p_attributes>;
36343};
36346 using base = SgAsmGenericSection;
36347 static constexpr char const * const name{"AsmJvmAttributeTable"};
36348 static constexpr unsigned long variant{934};
36349 static constexpr bool concrete{true};
36350 using subclasses_t = mp::List<>;
36352};
36353template <> struct node_from_variant_t<934> { using type = SgAsmJvmAttributeTable; };
36354
36355// Class: AsmJvmMethodTable
36356template <> struct describe_field_t<SgAsmJvmMethodTable,SgAsmJvmMethodPtrList,&SgAsmJvmMethodTable::p_methods> {
36358 using field_type = SgAsmJvmMethodPtrList;
36359 static constexpr size_t position{0};
36360 static constexpr char const * const name{"methods"};
36361 static constexpr char const * const typestr{"SgAsmJvmMethodPtrList"};
36362 static constexpr bool traverse{true};
36363 static constexpr auto mbr_ptr{&SgAsmJvmMethodTable::p_methods};
36364 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36365 using bind = Desc<SgAsmJvmMethodTable, SgAsmJvmMethodPtrList SgAsmJvmMethodTable::*, &SgAsmJvmMethodTable::p_methods>;
36366};
36368 using node = SgAsmJvmMethodTable;
36369 using base = SgAsmGenericSection;
36370 static constexpr char const * const name{"AsmJvmMethodTable"};
36371 static constexpr unsigned long variant{935};
36372 static constexpr bool concrete{true};
36373 using subclasses_t = mp::List<>;
36375};
36376template <> struct node_from_variant_t<935> { using type = SgAsmJvmMethodTable; };
36377
36378// Class: AsmJvmField
36379template <> struct describe_field_t<SgAsmJvmField,uint16_t,&SgAsmJvmField::p_access_flags> {
36380 using parent = SgAsmJvmField;
36381 using field_type = uint16_t;
36382 static constexpr size_t position{0};
36383 static constexpr char const * const name{"access_flags"};
36384 static constexpr char const * const typestr{"uint16_t"};
36385 static constexpr bool traverse{false};
36386 static constexpr auto mbr_ptr{&SgAsmJvmField::p_access_flags};
36387 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36388 using bind = Desc<SgAsmJvmField, uint16_t SgAsmJvmField::*, &SgAsmJvmField::p_access_flags>;
36389};
36390template <> struct describe_field_t<SgAsmJvmField,uint16_t,&SgAsmJvmField::p_name_index> {
36391 using parent = SgAsmJvmField;
36392 using field_type = uint16_t;
36393 static constexpr size_t position{1};
36394 static constexpr char const * const name{"name_index"};
36395 static constexpr char const * const typestr{"uint16_t"};
36396 static constexpr bool traverse{false};
36397 static constexpr auto mbr_ptr{&SgAsmJvmField::p_name_index};
36398 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36399 using bind = Desc<SgAsmJvmField, uint16_t SgAsmJvmField::*, &SgAsmJvmField::p_name_index>;
36400};
36401template <> struct describe_field_t<SgAsmJvmField,uint16_t,&SgAsmJvmField::p_descriptor_index> {
36402 using parent = SgAsmJvmField;
36403 using field_type = uint16_t;
36404 static constexpr size_t position{2};
36405 static constexpr char const * const name{"descriptor_index"};
36406 static constexpr char const * const typestr{"uint16_t"};
36407 static constexpr bool traverse{false};
36408 static constexpr auto mbr_ptr{&SgAsmJvmField::p_descriptor_index};
36409 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36410 using bind = Desc<SgAsmJvmField, uint16_t SgAsmJvmField::*, &SgAsmJvmField::p_descriptor_index>;
36411};
36412template <> struct describe_field_t<SgAsmJvmField,SgAsmJvmAttributeTable*,&SgAsmJvmField::p_attribute_table> {
36413 using parent = SgAsmJvmField;
36415 static constexpr size_t position{3};
36416 static constexpr char const * const name{"attribute_table"};
36417 static constexpr char const * const typestr{"SgAsmJvmAttributeTable*"};
36418 static constexpr bool traverse{true};
36419 static constexpr auto mbr_ptr{&SgAsmJvmField::p_attribute_table};
36420 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36421 using bind = Desc<SgAsmJvmField, SgAsmJvmAttributeTable* SgAsmJvmField::*, &SgAsmJvmField::p_attribute_table>;
36422};
36432template <> struct node_from_variant_t<936> { using type = SgAsmJvmField; };
36433
36434// Class: AsmJvmFieldTable
36435template <> struct describe_field_t<SgAsmJvmFieldTable,SgAsmJvmFieldPtrList,&SgAsmJvmFieldTable::p_fields> {
36436 using parent = SgAsmJvmFieldTable;
36437 using field_type = SgAsmJvmFieldPtrList;
36438 static constexpr size_t position{0};
36439 static constexpr char const * const name{"fields"};
36440 static constexpr char const * const typestr{"SgAsmJvmFieldPtrList"};
36441 static constexpr bool traverse{true};
36442 static constexpr auto mbr_ptr{&SgAsmJvmFieldTable::p_fields};
36443 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36444 using bind = Desc<SgAsmJvmFieldTable, SgAsmJvmFieldPtrList SgAsmJvmFieldTable::*, &SgAsmJvmFieldTable::p_fields>;
36445};
36447 using node = SgAsmJvmFieldTable;
36448 using base = SgAsmGenericSection;
36449 static constexpr char const * const name{"AsmJvmFieldTable"};
36450 static constexpr unsigned long variant{937};
36451 static constexpr bool concrete{true};
36452 using subclasses_t = mp::List<>;
36454};
36455template <> struct node_from_variant_t<937> { using type = SgAsmJvmFieldTable; };
36456
36457// Class: AsmJvmExceptionHandler
36458template <> struct describe_field_t<SgAsmJvmExceptionHandler,uint16_t,&SgAsmJvmExceptionHandler::p_start_pc> {
36460 using field_type = uint16_t;
36461 static constexpr size_t position{0};
36462 static constexpr char const * const name{"start_pc"};
36463 static constexpr char const * const typestr{"uint16_t"};
36464 static constexpr bool traverse{false};
36465 static constexpr auto mbr_ptr{&SgAsmJvmExceptionHandler::p_start_pc};
36466 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36467 using bind = Desc<SgAsmJvmExceptionHandler, uint16_t SgAsmJvmExceptionHandler::*, &SgAsmJvmExceptionHandler::p_start_pc>;
36468};
36469template <> struct describe_field_t<SgAsmJvmExceptionHandler,uint16_t,&SgAsmJvmExceptionHandler::p_end_pc> {
36471 using field_type = uint16_t;
36472 static constexpr size_t position{1};
36473 static constexpr char const * const name{"end_pc"};
36474 static constexpr char const * const typestr{"uint16_t"};
36475 static constexpr bool traverse{false};
36476 static constexpr auto mbr_ptr{&SgAsmJvmExceptionHandler::p_end_pc};
36477 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36478 using bind = Desc<SgAsmJvmExceptionHandler, uint16_t SgAsmJvmExceptionHandler::*, &SgAsmJvmExceptionHandler::p_end_pc>;
36479};
36480template <> struct describe_field_t<SgAsmJvmExceptionHandler,uint16_t,&SgAsmJvmExceptionHandler::p_handler_pc> {
36482 using field_type = uint16_t;
36483 static constexpr size_t position{2};
36484 static constexpr char const * const name{"handler_pc"};
36485 static constexpr char const * const typestr{"uint16_t"};
36486 static constexpr bool traverse{false};
36487 static constexpr auto mbr_ptr{&SgAsmJvmExceptionHandler::p_handler_pc};
36488 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36489 using bind = Desc<SgAsmJvmExceptionHandler, uint16_t SgAsmJvmExceptionHandler::*, &SgAsmJvmExceptionHandler::p_handler_pc>;
36490};
36491template <> struct describe_field_t<SgAsmJvmExceptionHandler,uint16_t,&SgAsmJvmExceptionHandler::p_catch_type> {
36493 using field_type = uint16_t;
36494 static constexpr size_t position{3};
36495 static constexpr char const * const name{"catch_type"};
36496 static constexpr char const * const typestr{"uint16_t"};
36497 static constexpr bool traverse{false};
36498 static constexpr auto mbr_ptr{&SgAsmJvmExceptionHandler::p_catch_type};
36499 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36500 using bind = Desc<SgAsmJvmExceptionHandler, uint16_t SgAsmJvmExceptionHandler::*, &SgAsmJvmExceptionHandler::p_catch_type>;
36501};
36511template <> struct node_from_variant_t<938> { using type = SgAsmJvmExceptionHandler; };
36512
36513// Class: AsmJvmExceptionTable
36514template <> struct describe_field_t<SgAsmJvmExceptionTable,SgAsmJvmExceptionHandlerPtrList,&SgAsmJvmExceptionTable::p_handlers> {
36516 using field_type = SgAsmJvmExceptionHandlerPtrList;
36517 static constexpr size_t position{0};
36518 static constexpr char const * const name{"handlers"};
36519 static constexpr char const * const typestr{"SgAsmJvmExceptionHandlerPtrList"};
36520 static constexpr bool traverse{false};
36521 static constexpr auto mbr_ptr{&SgAsmJvmExceptionTable::p_handlers};
36522 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36523 using bind = Desc<SgAsmJvmExceptionTable, SgAsmJvmExceptionHandlerPtrList SgAsmJvmExceptionTable::*, &SgAsmJvmExceptionTable::p_handlers>;
36524};
36527 using base = SgAsmJvmNode;
36528 static constexpr char const * const name{"AsmJvmExceptionTable"};
36529 static constexpr unsigned long variant{939};
36530 static constexpr bool concrete{true};
36531 using subclasses_t = mp::List<>;
36533};
36534template <> struct node_from_variant_t<939> { using type = SgAsmJvmExceptionTable; };
36535
36536// Class: AsmJvmClass
36537template <> struct describe_node_t<SgAsmJvmClass> {
36538 using node = SgAsmJvmClass;
36539 using base = SgAsmJvmNode;
36540 static constexpr char const * const name{"AsmJvmClass"};
36541 static constexpr unsigned long variant{940};
36542 static constexpr bool concrete{true};
36543 using subclasses_t = mp::List<>;
36544 using fields_t = mp::List<>;
36545};
36546template <> struct node_from_variant_t<940> { using type = SgAsmJvmClass; };
36547
36548// Class: AsmJvmLineNumberEntry
36549template <> struct describe_field_t<SgAsmJvmLineNumberEntry,uint16_t,&SgAsmJvmLineNumberEntry::p_start_pc> {
36551 using field_type = uint16_t;
36552 static constexpr size_t position{0};
36553 static constexpr char const * const name{"start_pc"};
36554 static constexpr char const * const typestr{"uint16_t"};
36555 static constexpr bool traverse{false};
36556 static constexpr auto mbr_ptr{&SgAsmJvmLineNumberEntry::p_start_pc};
36557 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36558 using bind = Desc<SgAsmJvmLineNumberEntry, uint16_t SgAsmJvmLineNumberEntry::*, &SgAsmJvmLineNumberEntry::p_start_pc>;
36559};
36560template <> struct describe_field_t<SgAsmJvmLineNumberEntry,uint16_t,&SgAsmJvmLineNumberEntry::p_line_number> {
36562 using field_type = uint16_t;
36563 static constexpr size_t position{1};
36564 static constexpr char const * const name{"line_number"};
36565 static constexpr char const * const typestr{"uint16_t"};
36566 static constexpr bool traverse{false};
36567 static constexpr auto mbr_ptr{&SgAsmJvmLineNumberEntry::p_line_number};
36568 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36569 using bind = Desc<SgAsmJvmLineNumberEntry, uint16_t SgAsmJvmLineNumberEntry::*, &SgAsmJvmLineNumberEntry::p_line_number>;
36570};
36573 using base = SgAsmJvmNode;
36574 static constexpr char const * const name{"AsmJvmLineNumberEntry"};
36575 static constexpr unsigned long variant{941};
36576 static constexpr bool concrete{true};
36577 using subclasses_t = mp::List<>;
36579};
36580template <> struct node_from_variant_t<941> { using type = SgAsmJvmLineNumberEntry; };
36581
36582// Class: AsmJvmLineNumberTable
36583template <> struct describe_field_t<SgAsmJvmLineNumberTable,SgAsmJvmLineNumberEntryPtrList,&SgAsmJvmLineNumberTable::p_line_number_table> {
36585 using field_type = SgAsmJvmLineNumberEntryPtrList;
36586 static constexpr size_t position{0};
36587 static constexpr char const * const name{"line_number_table"};
36588 static constexpr char const * const typestr{"SgAsmJvmLineNumberEntryPtrList"};
36589 static constexpr bool traverse{false};
36590 static constexpr auto mbr_ptr{&SgAsmJvmLineNumberTable::p_line_number_table};
36591 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36592 using bind = Desc<SgAsmJvmLineNumberTable, SgAsmJvmLineNumberEntryPtrList SgAsmJvmLineNumberTable::*, &SgAsmJvmLineNumberTable::p_line_number_table>;
36593};
36596 using base = SgAsmJvmAttribute;
36597 static constexpr char const * const name{"AsmJvmLineNumberTable"};
36598 static constexpr unsigned long variant{942};
36599 static constexpr bool concrete{true};
36600 using subclasses_t = mp::List<>;
36602};
36603template <> struct node_from_variant_t<942> { using type = SgAsmJvmLineNumberTable; };
36604
36605// Class: AsmJvmInnerClassesEntry
36606template <> struct describe_field_t<SgAsmJvmInnerClassesEntry,uint16_t,&SgAsmJvmInnerClassesEntry::p_inner_class_info_index> {
36608 using field_type = uint16_t;
36609 static constexpr size_t position{0};
36610 static constexpr char const * const name{"inner_class_info_index"};
36611 static constexpr char const * const typestr{"uint16_t"};
36612 static constexpr bool traverse{false};
36613 static constexpr auto mbr_ptr{&SgAsmJvmInnerClassesEntry::p_inner_class_info_index};
36614 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36615 using bind = Desc<SgAsmJvmInnerClassesEntry, uint16_t SgAsmJvmInnerClassesEntry::*, &SgAsmJvmInnerClassesEntry::p_inner_class_info_index>;
36616};
36617template <> struct describe_field_t<SgAsmJvmInnerClassesEntry,uint16_t,&SgAsmJvmInnerClassesEntry::p_outer_class_info_index> {
36619 using field_type = uint16_t;
36620 static constexpr size_t position{1};
36621 static constexpr char const * const name{"outer_class_info_index"};
36622 static constexpr char const * const typestr{"uint16_t"};
36623 static constexpr bool traverse{false};
36624 static constexpr auto mbr_ptr{&SgAsmJvmInnerClassesEntry::p_outer_class_info_index};
36625 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36626 using bind = Desc<SgAsmJvmInnerClassesEntry, uint16_t SgAsmJvmInnerClassesEntry::*, &SgAsmJvmInnerClassesEntry::p_outer_class_info_index>;
36627};
36628template <> struct describe_field_t<SgAsmJvmInnerClassesEntry,uint16_t,&SgAsmJvmInnerClassesEntry::p_inner_name_index> {
36630 using field_type = uint16_t;
36631 static constexpr size_t position{2};
36632 static constexpr char const * const name{"inner_name_index"};
36633 static constexpr char const * const typestr{"uint16_t"};
36634 static constexpr bool traverse{false};
36635 static constexpr auto mbr_ptr{&SgAsmJvmInnerClassesEntry::p_inner_name_index};
36636 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36637 using bind = Desc<SgAsmJvmInnerClassesEntry, uint16_t SgAsmJvmInnerClassesEntry::*, &SgAsmJvmInnerClassesEntry::p_inner_name_index>;
36638};
36639template <> struct describe_field_t<SgAsmJvmInnerClassesEntry,uint16_t,&SgAsmJvmInnerClassesEntry::p_inner_class_access_flags> {
36641 using field_type = uint16_t;
36642 static constexpr size_t position{3};
36643 static constexpr char const * const name{"inner_class_access_flags"};
36644 static constexpr char const * const typestr{"uint16_t"};
36645 static constexpr bool traverse{false};
36646 static constexpr auto mbr_ptr{&SgAsmJvmInnerClassesEntry::p_inner_class_access_flags};
36647 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36648 using bind = Desc<SgAsmJvmInnerClassesEntry, uint16_t SgAsmJvmInnerClassesEntry::*, &SgAsmJvmInnerClassesEntry::p_inner_class_access_flags>;
36649};
36659template <> struct node_from_variant_t<943> { using type = SgAsmJvmInnerClassesEntry; };
36660
36661// Class: AsmJvmInnerClasses
36662template <> struct describe_field_t<SgAsmJvmInnerClasses,SgAsmJvmInnerClassesEntryPtrList,&SgAsmJvmInnerClasses::p_classes> {
36664 using field_type = SgAsmJvmInnerClassesEntryPtrList;
36665 static constexpr size_t position{0};
36666 static constexpr char const * const name{"classes"};
36667 static constexpr char const * const typestr{"SgAsmJvmInnerClassesEntryPtrList"};
36668 static constexpr bool traverse{false};
36669 static constexpr auto mbr_ptr{&SgAsmJvmInnerClasses::p_classes};
36670 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36671 using bind = Desc<SgAsmJvmInnerClasses, SgAsmJvmInnerClassesEntryPtrList SgAsmJvmInnerClasses::*, &SgAsmJvmInnerClasses::p_classes>;
36672};
36674 using node = SgAsmJvmInnerClasses;
36675 using base = SgAsmJvmAttribute;
36676 static constexpr char const * const name{"AsmJvmInnerClasses"};
36677 static constexpr unsigned long variant{944};
36678 static constexpr bool concrete{true};
36679 using subclasses_t = mp::List<>;
36681};
36682template <> struct node_from_variant_t<944> { using type = SgAsmJvmInnerClasses; };
36683
36684// Class: AsmCilInstruction
36685template <> struct describe_field_t<SgAsmCilInstruction,Rose::BinaryAnalysis::CilInstructionKind,&SgAsmCilInstruction::p_kind> {
36687 using field_type = Rose::BinaryAnalysis::CilInstructionKind;
36688 static constexpr size_t position{0};
36689 static constexpr char const * const name{"kind"};
36690 static constexpr char const * const typestr{"Rose::BinaryAnalysis::CilInstructionKind"};
36691 static constexpr bool traverse{false};
36692 static constexpr auto mbr_ptr{&SgAsmCilInstruction::p_kind};
36693 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36694 using bind = Desc<SgAsmCilInstruction, Rose::BinaryAnalysis::CilInstructionKind SgAsmCilInstruction::*, &SgAsmCilInstruction::p_kind>;
36695};
36697 using node = SgAsmCilInstruction;
36698 using base = SgAsmInstruction;
36699 static constexpr char const * const name{"AsmCilInstruction"};
36700 static constexpr unsigned long variant{945};
36701 static constexpr bool concrete{true};
36702 using subclasses_t = mp::List<>;
36704};
36705template <> struct node_from_variant_t<945> { using type = SgAsmCilInstruction; };
36706
36707// Class: AsmStackExpression
36708template <> struct describe_field_t<SgAsmStackExpression,int,&SgAsmStackExpression::p_stackPosition> {
36710 using field_type = int;
36711 static constexpr size_t position{0};
36712 static constexpr char const * const name{"stackPosition"};
36713 static constexpr char const * const typestr{"int"};
36714 static constexpr bool traverse{false};
36715 static constexpr auto mbr_ptr{&SgAsmStackExpression::p_stackPosition};
36716 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36717 using bind = Desc<SgAsmStackExpression, int SgAsmStackExpression::*, &SgAsmStackExpression::p_stackPosition>;
36718};
36720 using node = SgAsmStackExpression;
36721 using base = SgAsmExpression;
36722 static constexpr char const * const name{"AsmStackExpression"};
36723 static constexpr unsigned long variant{946};
36724 static constexpr bool concrete{true};
36725 using subclasses_t = mp::List<>;
36727};
36728template <> struct node_from_variant_t<946> { using type = SgAsmStackExpression; };
36729
36730// Class: AsmJvmEnclosingMethod
36731template <> struct describe_field_t<SgAsmJvmEnclosingMethod,uint16_t,&SgAsmJvmEnclosingMethod::p_class_index> {
36733 using field_type = uint16_t;
36734 static constexpr size_t position{0};
36735 static constexpr char const * const name{"class_index"};
36736 static constexpr char const * const typestr{"uint16_t"};
36737 static constexpr bool traverse{false};
36738 static constexpr auto mbr_ptr{&SgAsmJvmEnclosingMethod::p_class_index};
36739 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36740 using bind = Desc<SgAsmJvmEnclosingMethod, uint16_t SgAsmJvmEnclosingMethod::*, &SgAsmJvmEnclosingMethod::p_class_index>;
36741};
36742template <> struct describe_field_t<SgAsmJvmEnclosingMethod,uint16_t,&SgAsmJvmEnclosingMethod::p_method_index> {
36744 using field_type = uint16_t;
36745 static constexpr size_t position{1};
36746 static constexpr char const * const name{"method_index"};
36747 static constexpr char const * const typestr{"uint16_t"};
36748 static constexpr bool traverse{false};
36749 static constexpr auto mbr_ptr{&SgAsmJvmEnclosingMethod::p_method_index};
36750 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36751 using bind = Desc<SgAsmJvmEnclosingMethod, uint16_t SgAsmJvmEnclosingMethod::*, &SgAsmJvmEnclosingMethod::p_method_index>;
36752};
36755 using base = SgAsmJvmAttribute;
36756 static constexpr char const * const name{"AsmJvmEnclosingMethod"};
36757 static constexpr unsigned long variant{947};
36758 static constexpr bool concrete{true};
36759 using subclasses_t = mp::List<>;
36761};
36762template <> struct node_from_variant_t<947> { using type = SgAsmJvmEnclosingMethod; };
36763
36764// Class: AdaNullConstraint
36766 using node = SgAdaNullConstraint;
36767 using base = SgAdaTypeConstraint;
36768 static constexpr char const * const name{"AdaNullConstraint"};
36769 static constexpr unsigned long variant{948};
36770 static constexpr bool concrete{true};
36771 using subclasses_t = mp::List<>;
36772 using fields_t = mp::List<>;
36773};
36774template <> struct node_from_variant_t<948> { using type = SgAdaNullConstraint; };
36775
36776// Class: AsmJvmModuleMainClass
36777template <> struct describe_field_t<SgAsmJvmModuleMainClass,uint16_t,&SgAsmJvmModuleMainClass::p_main_class_index> {
36779 using field_type = uint16_t;
36780 static constexpr size_t position{0};
36781 static constexpr char const * const name{"main_class_index"};
36782 static constexpr char const * const typestr{"uint16_t"};
36783 static constexpr bool traverse{false};
36784 static constexpr auto mbr_ptr{&SgAsmJvmModuleMainClass::p_main_class_index};
36785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36786 using bind = Desc<SgAsmJvmModuleMainClass, uint16_t SgAsmJvmModuleMainClass::*, &SgAsmJvmModuleMainClass::p_main_class_index>;
36787};
36790 using base = SgAsmJvmAttribute;
36791 static constexpr char const * const name{"AsmJvmModuleMainClass"};
36792 static constexpr unsigned long variant{949};
36793 static constexpr bool concrete{true};
36794 using subclasses_t = mp::List<>;
36796};
36797template <> struct node_from_variant_t<949> { using type = SgAsmJvmModuleMainClass; };
36798
36799// Class: AsmInstructionList
36800template <> struct describe_field_t<SgAsmInstructionList,SgAsmInstructionPtrList,&SgAsmInstructionList::p_instructions> {
36802 using field_type = SgAsmInstructionPtrList;
36803 static constexpr size_t position{0};
36804 static constexpr char const * const name{"instructions"};
36805 static constexpr char const * const typestr{"SgAsmInstructionPtrList"};
36806 static constexpr bool traverse{false};
36807 static constexpr auto mbr_ptr{&SgAsmInstructionList::p_instructions};
36808 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36809 using bind = Desc<SgAsmInstructionList, SgAsmInstructionPtrList SgAsmInstructionList::*, &SgAsmInstructionList::p_instructions>;
36810};
36812 using node = SgAsmInstructionList;
36813 using base = SgAsmNode;
36814 static constexpr char const * const name{"AsmInstructionList"};
36815 static constexpr unsigned long variant{950};
36816 static constexpr bool concrete{true};
36817 using subclasses_t = mp::List<>;
36819};
36820template <> struct node_from_variant_t<950> { using type = SgAsmInstructionList; };
36821
36822// Class: AsmCilNode
36823template <> struct describe_node_t<SgAsmCilNode> {
36824 using node = SgAsmCilNode;
36825 using base = SgAsmNode;
36826 static constexpr char const * const name{"AsmCilNode"};
36827 static constexpr unsigned long variant{951};
36828 static constexpr bool concrete{false};
36830 using fields_t = mp::List<>;
36831};
36832template <> struct node_from_variant_t<951> { using type = SgAsmCilNode; };
36833
36834// Class: AsmCilAssembly
36835template <> struct describe_field_t<SgAsmCilAssembly,uint32_t,&SgAsmCilAssembly::p_HashAlgId> {
36836 using parent = SgAsmCilAssembly;
36837 using field_type = uint32_t;
36838 static constexpr size_t position{0};
36839 static constexpr char const * const name{"HashAlgId"};
36840 static constexpr char const * const typestr{"uint32_t"};
36841 static constexpr bool traverse{false};
36842 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_HashAlgId};
36843 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36844 using bind = Desc<SgAsmCilAssembly, uint32_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_HashAlgId>;
36845};
36846template <> struct describe_field_t<SgAsmCilAssembly,uint16_t,&SgAsmCilAssembly::p_MajorVersion> {
36847 using parent = SgAsmCilAssembly;
36848 using field_type = uint16_t;
36849 static constexpr size_t position{1};
36850 static constexpr char const * const name{"MajorVersion"};
36851 static constexpr char const * const typestr{"uint16_t"};
36852 static constexpr bool traverse{false};
36853 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_MajorVersion};
36854 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36855 using bind = Desc<SgAsmCilAssembly, uint16_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_MajorVersion>;
36856};
36857template <> struct describe_field_t<SgAsmCilAssembly,uint16_t,&SgAsmCilAssembly::p_MinorVersion> {
36858 using parent = SgAsmCilAssembly;
36859 using field_type = uint16_t;
36860 static constexpr size_t position{2};
36861 static constexpr char const * const name{"MinorVersion"};
36862 static constexpr char const * const typestr{"uint16_t"};
36863 static constexpr bool traverse{false};
36864 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_MinorVersion};
36865 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36866 using bind = Desc<SgAsmCilAssembly, uint16_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_MinorVersion>;
36867};
36868template <> struct describe_field_t<SgAsmCilAssembly,uint16_t,&SgAsmCilAssembly::p_BuildNumber> {
36869 using parent = SgAsmCilAssembly;
36870 using field_type = uint16_t;
36871 static constexpr size_t position{3};
36872 static constexpr char const * const name{"BuildNumber"};
36873 static constexpr char const * const typestr{"uint16_t"};
36874 static constexpr bool traverse{false};
36875 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_BuildNumber};
36876 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36877 using bind = Desc<SgAsmCilAssembly, uint16_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_BuildNumber>;
36878};
36879template <> struct describe_field_t<SgAsmCilAssembly,uint16_t,&SgAsmCilAssembly::p_RevisionNumber> {
36880 using parent = SgAsmCilAssembly;
36881 using field_type = uint16_t;
36882 static constexpr size_t position{4};
36883 static constexpr char const * const name{"RevisionNumber"};
36884 static constexpr char const * const typestr{"uint16_t"};
36885 static constexpr bool traverse{false};
36886 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_RevisionNumber};
36887 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36888 using bind = Desc<SgAsmCilAssembly, uint16_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_RevisionNumber>;
36889};
36890template <> struct describe_field_t<SgAsmCilAssembly,uint32_t,&SgAsmCilAssembly::p_Flags> {
36891 using parent = SgAsmCilAssembly;
36892 using field_type = uint32_t;
36893 static constexpr size_t position{5};
36894 static constexpr char const * const name{"Flags"};
36895 static constexpr char const * const typestr{"uint32_t"};
36896 static constexpr bool traverse{false};
36897 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_Flags};
36898 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36899 using bind = Desc<SgAsmCilAssembly, uint32_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_Flags>;
36900};
36901template <> struct describe_field_t<SgAsmCilAssembly,uint32_t,&SgAsmCilAssembly::p_PublicKey> {
36902 using parent = SgAsmCilAssembly;
36903 using field_type = uint32_t;
36904 static constexpr size_t position{6};
36905 static constexpr char const * const name{"PublicKey"};
36906 static constexpr char const * const typestr{"uint32_t"};
36907 static constexpr bool traverse{false};
36908 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_PublicKey};
36909 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36910 using bind = Desc<SgAsmCilAssembly, uint32_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_PublicKey>;
36911};
36912template <> struct describe_field_t<SgAsmCilAssembly,uint32_t,&SgAsmCilAssembly::p_Name> {
36913 using parent = SgAsmCilAssembly;
36914 using field_type = uint32_t;
36915 static constexpr size_t position{7};
36916 static constexpr char const * const name{"Name"};
36917 static constexpr char const * const typestr{"uint32_t"};
36918 static constexpr bool traverse{false};
36919 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_Name};
36920 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36921 using bind = Desc<SgAsmCilAssembly, uint32_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_Name>;
36922};
36923template <> struct describe_field_t<SgAsmCilAssembly,uint32_t,&SgAsmCilAssembly::p_Culture> {
36924 using parent = SgAsmCilAssembly;
36925 using field_type = uint32_t;
36926 static constexpr size_t position{8};
36927 static constexpr char const * const name{"Culture"};
36928 static constexpr char const * const typestr{"uint32_t"};
36929 static constexpr bool traverse{false};
36930 static constexpr auto mbr_ptr{&SgAsmCilAssembly::p_Culture};
36931 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36932 using bind = Desc<SgAsmCilAssembly, uint32_t SgAsmCilAssembly::*, &SgAsmCilAssembly::p_Culture>;
36933};
36943template <> struct node_from_variant_t<952> { using type = SgAsmCilAssembly; };
36944
36945// Class: AsmCilAssemblyOS
36946template <> struct describe_field_t<SgAsmCilAssemblyOS,uint32_t,&SgAsmCilAssemblyOS::p_OSPlatformID> {
36947 using parent = SgAsmCilAssemblyOS;
36948 using field_type = uint32_t;
36949 static constexpr size_t position{0};
36950 static constexpr char const * const name{"OSPlatformID"};
36951 static constexpr char const * const typestr{"uint32_t"};
36952 static constexpr bool traverse{false};
36953 static constexpr auto mbr_ptr{&SgAsmCilAssemblyOS::p_OSPlatformID};
36954 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36955 using bind = Desc<SgAsmCilAssemblyOS, uint32_t SgAsmCilAssemblyOS::*, &SgAsmCilAssemblyOS::p_OSPlatformID>;
36956};
36957template <> struct describe_field_t<SgAsmCilAssemblyOS,uint32_t,&SgAsmCilAssemblyOS::p_OSMajorVersion> {
36958 using parent = SgAsmCilAssemblyOS;
36959 using field_type = uint32_t;
36960 static constexpr size_t position{1};
36961 static constexpr char const * const name{"OSMajorVersion"};
36962 static constexpr char const * const typestr{"uint32_t"};
36963 static constexpr bool traverse{false};
36964 static constexpr auto mbr_ptr{&SgAsmCilAssemblyOS::p_OSMajorVersion};
36965 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36966 using bind = Desc<SgAsmCilAssemblyOS, uint32_t SgAsmCilAssemblyOS::*, &SgAsmCilAssemblyOS::p_OSMajorVersion>;
36967};
36968template <> struct describe_field_t<SgAsmCilAssemblyOS,uint32_t,&SgAsmCilAssemblyOS::p_OSMinorVersion> {
36969 using parent = SgAsmCilAssemblyOS;
36970 using field_type = uint32_t;
36971 static constexpr size_t position{2};
36972 static constexpr char const * const name{"OSMinorVersion"};
36973 static constexpr char const * const typestr{"uint32_t"};
36974 static constexpr bool traverse{false};
36975 static constexpr auto mbr_ptr{&SgAsmCilAssemblyOS::p_OSMinorVersion};
36976 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
36977 using bind = Desc<SgAsmCilAssemblyOS, uint32_t SgAsmCilAssemblyOS::*, &SgAsmCilAssemblyOS::p_OSMinorVersion>;
36978};
36980 using node = SgAsmCilAssemblyOS;
36981 using base = SgAsmCilMetadata;
36982 static constexpr char const * const name{"AsmCilAssemblyOS"};
36983 static constexpr unsigned long variant{953};
36984 static constexpr bool concrete{true};
36985 using subclasses_t = mp::List<>;
36987};
36988template <> struct node_from_variant_t<953> { using type = SgAsmCilAssemblyOS; };
36989
36990// Class: AsmCilAssemblyProcessor
36991template <> struct describe_field_t<SgAsmCilAssemblyProcessor,uint32_t,&SgAsmCilAssemblyProcessor::p_Processor> {
36993 using field_type = uint32_t;
36994 static constexpr size_t position{0};
36995 static constexpr char const * const name{"Processor"};
36996 static constexpr char const * const typestr{"uint32_t"};
36997 static constexpr bool traverse{false};
36998 static constexpr auto mbr_ptr{&SgAsmCilAssemblyProcessor::p_Processor};
36999 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37000 using bind = Desc<SgAsmCilAssemblyProcessor, uint32_t SgAsmCilAssemblyProcessor::*, &SgAsmCilAssemblyProcessor::p_Processor>;
37001};
37004 using base = SgAsmCilMetadata;
37005 static constexpr char const * const name{"AsmCilAssemblyProcessor"};
37006 static constexpr unsigned long variant{954};
37007 static constexpr bool concrete{true};
37008 using subclasses_t = mp::List<>;
37010};
37011template <> struct node_from_variant_t<954> { using type = SgAsmCilAssemblyProcessor; };
37012
37013// Class: AsmCilAssemblyRef
37014template <> struct describe_field_t<SgAsmCilAssemblyRef,uint16_t,&SgAsmCilAssemblyRef::p_MajorVersion> {
37016 using field_type = uint16_t;
37017 static constexpr size_t position{0};
37018 static constexpr char const * const name{"MajorVersion"};
37019 static constexpr char const * const typestr{"uint16_t"};
37020 static constexpr bool traverse{false};
37021 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_MajorVersion};
37022 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37023 using bind = Desc<SgAsmCilAssemblyRef, uint16_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_MajorVersion>;
37024};
37025template <> struct describe_field_t<SgAsmCilAssemblyRef,uint16_t,&SgAsmCilAssemblyRef::p_MinorVersion> {
37027 using field_type = uint16_t;
37028 static constexpr size_t position{1};
37029 static constexpr char const * const name{"MinorVersion"};
37030 static constexpr char const * const typestr{"uint16_t"};
37031 static constexpr bool traverse{false};
37032 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_MinorVersion};
37033 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37034 using bind = Desc<SgAsmCilAssemblyRef, uint16_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_MinorVersion>;
37035};
37036template <> struct describe_field_t<SgAsmCilAssemblyRef,uint16_t,&SgAsmCilAssemblyRef::p_BuildNumber> {
37038 using field_type = uint16_t;
37039 static constexpr size_t position{2};
37040 static constexpr char const * const name{"BuildNumber"};
37041 static constexpr char const * const typestr{"uint16_t"};
37042 static constexpr bool traverse{false};
37043 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_BuildNumber};
37044 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37045 using bind = Desc<SgAsmCilAssemblyRef, uint16_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_BuildNumber>;
37046};
37047template <> struct describe_field_t<SgAsmCilAssemblyRef,uint16_t,&SgAsmCilAssemblyRef::p_RevisionNumber> {
37049 using field_type = uint16_t;
37050 static constexpr size_t position{3};
37051 static constexpr char const * const name{"RevisionNumber"};
37052 static constexpr char const * const typestr{"uint16_t"};
37053 static constexpr bool traverse{false};
37054 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_RevisionNumber};
37055 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37056 using bind = Desc<SgAsmCilAssemblyRef, uint16_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_RevisionNumber>;
37057};
37058template <> struct describe_field_t<SgAsmCilAssemblyRef,uint32_t,&SgAsmCilAssemblyRef::p_Flags> {
37060 using field_type = uint32_t;
37061 static constexpr size_t position{4};
37062 static constexpr char const * const name{"Flags"};
37063 static constexpr char const * const typestr{"uint32_t"};
37064 static constexpr bool traverse{false};
37065 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_Flags};
37066 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37067 using bind = Desc<SgAsmCilAssemblyRef, uint32_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_Flags>;
37068};
37069template <> struct describe_field_t<SgAsmCilAssemblyRef,uint32_t,&SgAsmCilAssemblyRef::p_PublicKeyOrToken> {
37071 using field_type = uint32_t;
37072 static constexpr size_t position{5};
37073 static constexpr char const * const name{"PublicKeyOrToken"};
37074 static constexpr char const * const typestr{"uint32_t"};
37075 static constexpr bool traverse{false};
37076 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_PublicKeyOrToken};
37077 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37078 using bind = Desc<SgAsmCilAssemblyRef, uint32_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_PublicKeyOrToken>;
37079};
37080template <> struct describe_field_t<SgAsmCilAssemblyRef,uint32_t,&SgAsmCilAssemblyRef::p_Name> {
37082 using field_type = uint32_t;
37083 static constexpr size_t position{6};
37084 static constexpr char const * const name{"Name"};
37085 static constexpr char const * const typestr{"uint32_t"};
37086 static constexpr bool traverse{false};
37087 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_Name};
37088 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37089 using bind = Desc<SgAsmCilAssemblyRef, uint32_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_Name>;
37090};
37091template <> struct describe_field_t<SgAsmCilAssemblyRef,uint32_t,&SgAsmCilAssemblyRef::p_Culture> {
37093 using field_type = uint32_t;
37094 static constexpr size_t position{7};
37095 static constexpr char const * const name{"Culture"};
37096 static constexpr char const * const typestr{"uint32_t"};
37097 static constexpr bool traverse{false};
37098 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_Culture};
37099 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37100 using bind = Desc<SgAsmCilAssemblyRef, uint32_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_Culture>;
37101};
37102template <> struct describe_field_t<SgAsmCilAssemblyRef,uint32_t,&SgAsmCilAssemblyRef::p_HashValue> {
37104 using field_type = uint32_t;
37105 static constexpr size_t position{8};
37106 static constexpr char const * const name{"HashValue"};
37107 static constexpr char const * const typestr{"uint32_t"};
37108 static constexpr bool traverse{false};
37109 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRef::p_HashValue};
37110 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37111 using bind = Desc<SgAsmCilAssemblyRef, uint32_t SgAsmCilAssemblyRef::*, &SgAsmCilAssemblyRef::p_HashValue>;
37112};
37122template <> struct node_from_variant_t<955> { using type = SgAsmCilAssemblyRef; };
37123
37124// Class: AsmCilAssemblyRefOS
37125template <> struct describe_field_t<SgAsmCilAssemblyRefOS,uint32_t,&SgAsmCilAssemblyRefOS::p_OSPlatformID> {
37127 using field_type = uint32_t;
37128 static constexpr size_t position{0};
37129 static constexpr char const * const name{"OSPlatformID"};
37130 static constexpr char const * const typestr{"uint32_t"};
37131 static constexpr bool traverse{false};
37132 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefOS::p_OSPlatformID};
37133 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37134 using bind = Desc<SgAsmCilAssemblyRefOS, uint32_t SgAsmCilAssemblyRefOS::*, &SgAsmCilAssemblyRefOS::p_OSPlatformID>;
37135};
37136template <> struct describe_field_t<SgAsmCilAssemblyRefOS,uint32_t,&SgAsmCilAssemblyRefOS::p_OSMajorVersion> {
37138 using field_type = uint32_t;
37139 static constexpr size_t position{1};
37140 static constexpr char const * const name{"OSMajorVersion"};
37141 static constexpr char const * const typestr{"uint32_t"};
37142 static constexpr bool traverse{false};
37143 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefOS::p_OSMajorVersion};
37144 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37145 using bind = Desc<SgAsmCilAssemblyRefOS, uint32_t SgAsmCilAssemblyRefOS::*, &SgAsmCilAssemblyRefOS::p_OSMajorVersion>;
37146};
37147template <> struct describe_field_t<SgAsmCilAssemblyRefOS,uint32_t,&SgAsmCilAssemblyRefOS::p_OSMinorVersion> {
37149 using field_type = uint32_t;
37150 static constexpr size_t position{2};
37151 static constexpr char const * const name{"OSMinorVersion"};
37152 static constexpr char const * const typestr{"uint32_t"};
37153 static constexpr bool traverse{false};
37154 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefOS::p_OSMinorVersion};
37155 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37156 using bind = Desc<SgAsmCilAssemblyRefOS, uint32_t SgAsmCilAssemblyRefOS::*, &SgAsmCilAssemblyRefOS::p_OSMinorVersion>;
37157};
37158template <> struct describe_field_t<SgAsmCilAssemblyRefOS,uint32_t,&SgAsmCilAssemblyRefOS::p_AssemblyRefOS> {
37160 using field_type = uint32_t;
37161 static constexpr size_t position{3};
37162 static constexpr char const * const name{"AssemblyRefOS"};
37163 static constexpr char const * const typestr{"uint32_t"};
37164 static constexpr bool traverse{false};
37165 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefOS::p_AssemblyRefOS};
37166 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37167 using bind = Desc<SgAsmCilAssemblyRefOS, uint32_t SgAsmCilAssemblyRefOS::*, &SgAsmCilAssemblyRefOS::p_AssemblyRefOS>;
37168};
37178template <> struct node_from_variant_t<956> { using type = SgAsmCilAssemblyRefOS; };
37179
37180// Class: AsmCilAssemblyRefProcessor
37181template <> struct describe_field_t<SgAsmCilAssemblyRefProcessor,uint32_t,&SgAsmCilAssemblyRefProcessor::p_Processor> {
37183 using field_type = uint32_t;
37184 static constexpr size_t position{0};
37185 static constexpr char const * const name{"Processor"};
37186 static constexpr char const * const typestr{"uint32_t"};
37187 static constexpr bool traverse{false};
37188 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefProcessor::p_Processor};
37189 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37190 using bind = Desc<SgAsmCilAssemblyRefProcessor, uint32_t SgAsmCilAssemblyRefProcessor::*, &SgAsmCilAssemblyRefProcessor::p_Processor>;
37191};
37192template <> struct describe_field_t<SgAsmCilAssemblyRefProcessor,uint32_t,&SgAsmCilAssemblyRefProcessor::p_AssemblyRef> {
37194 using field_type = uint32_t;
37195 static constexpr size_t position{1};
37196 static constexpr char const * const name{"AssemblyRef"};
37197 static constexpr char const * const typestr{"uint32_t"};
37198 static constexpr bool traverse{false};
37199 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefProcessor::p_AssemblyRef};
37200 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37201 using bind = Desc<SgAsmCilAssemblyRefProcessor, uint32_t SgAsmCilAssemblyRefProcessor::*, &SgAsmCilAssemblyRefProcessor::p_AssemblyRef>;
37202};
37205 using base = SgAsmCilMetadata;
37206 static constexpr char const * const name{"AsmCilAssemblyRefProcessor"};
37207 static constexpr unsigned long variant{957};
37208 static constexpr bool concrete{true};
37209 using subclasses_t = mp::List<>;
37211};
37212template <> struct node_from_variant_t<957> { using type = SgAsmCilAssemblyRefProcessor; };
37213
37214// Class: AsmCilClassLayout
37215template <> struct describe_field_t<SgAsmCilClassLayout,uint16_t,&SgAsmCilClassLayout::p_PackingSize> {
37217 using field_type = uint16_t;
37218 static constexpr size_t position{0};
37219 static constexpr char const * const name{"PackingSize"};
37220 static constexpr char const * const typestr{"uint16_t"};
37221 static constexpr bool traverse{false};
37222 static constexpr auto mbr_ptr{&SgAsmCilClassLayout::p_PackingSize};
37223 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37224 using bind = Desc<SgAsmCilClassLayout, uint16_t SgAsmCilClassLayout::*, &SgAsmCilClassLayout::p_PackingSize>;
37225};
37226template <> struct describe_field_t<SgAsmCilClassLayout,uint32_t,&SgAsmCilClassLayout::p_ClassSize> {
37228 using field_type = uint32_t;
37229 static constexpr size_t position{1};
37230 static constexpr char const * const name{"ClassSize"};
37231 static constexpr char const * const typestr{"uint32_t"};
37232 static constexpr bool traverse{false};
37233 static constexpr auto mbr_ptr{&SgAsmCilClassLayout::p_ClassSize};
37234 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37235 using bind = Desc<SgAsmCilClassLayout, uint32_t SgAsmCilClassLayout::*, &SgAsmCilClassLayout::p_ClassSize>;
37236};
37237template <> struct describe_field_t<SgAsmCilClassLayout,uint32_t,&SgAsmCilClassLayout::p_Parent> {
37239 using field_type = uint32_t;
37240 static constexpr size_t position{2};
37241 static constexpr char const * const name{"Parent"};
37242 static constexpr char const * const typestr{"uint32_t"};
37243 static constexpr bool traverse{false};
37244 static constexpr auto mbr_ptr{&SgAsmCilClassLayout::p_Parent};
37245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37246 using bind = Desc<SgAsmCilClassLayout, uint32_t SgAsmCilClassLayout::*, &SgAsmCilClassLayout::p_Parent>;
37247};
37249 using node = SgAsmCilClassLayout;
37250 using base = SgAsmCilMetadata;
37251 static constexpr char const * const name{"AsmCilClassLayout"};
37252 static constexpr unsigned long variant{958};
37253 static constexpr bool concrete{true};
37254 using subclasses_t = mp::List<>;
37256};
37257template <> struct node_from_variant_t<958> { using type = SgAsmCilClassLayout; };
37258
37259// Class: AsmCilConstant
37260template <> struct describe_field_t<SgAsmCilConstant,uint8_t,&SgAsmCilConstant::p_Type> {
37261 using parent = SgAsmCilConstant;
37262 using field_type = uint8_t;
37263 static constexpr size_t position{0};
37264 static constexpr char const * const name{"Type"};
37265 static constexpr char const * const typestr{"uint8_t"};
37266 static constexpr bool traverse{false};
37267 static constexpr auto mbr_ptr{&SgAsmCilConstant::p_Type};
37268 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37269 using bind = Desc<SgAsmCilConstant, uint8_t SgAsmCilConstant::*, &SgAsmCilConstant::p_Type>;
37270};
37271template <> struct describe_field_t<SgAsmCilConstant,uint8_t,&SgAsmCilConstant::p_Padding> {
37272 using parent = SgAsmCilConstant;
37273 using field_type = uint8_t;
37274 static constexpr size_t position{1};
37275 static constexpr char const * const name{"Padding"};
37276 static constexpr char const * const typestr{"uint8_t"};
37277 static constexpr bool traverse{false};
37278 static constexpr auto mbr_ptr{&SgAsmCilConstant::p_Padding};
37279 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37280 using bind = Desc<SgAsmCilConstant, uint8_t SgAsmCilConstant::*, &SgAsmCilConstant::p_Padding>;
37281};
37282template <> struct describe_field_t<SgAsmCilConstant,uint32_t,&SgAsmCilConstant::p_Parent> {
37283 using parent = SgAsmCilConstant;
37284 using field_type = uint32_t;
37285 static constexpr size_t position{2};
37286 static constexpr char const * const name{"Parent"};
37287 static constexpr char const * const typestr{"uint32_t"};
37288 static constexpr bool traverse{false};
37289 static constexpr auto mbr_ptr{&SgAsmCilConstant::p_Parent};
37290 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37291 using bind = Desc<SgAsmCilConstant, uint32_t SgAsmCilConstant::*, &SgAsmCilConstant::p_Parent>;
37292};
37293template <> struct describe_field_t<SgAsmCilConstant,uint32_t,&SgAsmCilConstant::p_Value> {
37294 using parent = SgAsmCilConstant;
37295 using field_type = uint32_t;
37296 static constexpr size_t position{3};
37297 static constexpr char const * const name{"Value"};
37298 static constexpr char const * const typestr{"uint32_t"};
37299 static constexpr bool traverse{false};
37300 static constexpr auto mbr_ptr{&SgAsmCilConstant::p_Value};
37301 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37302 using bind = Desc<SgAsmCilConstant, uint32_t SgAsmCilConstant::*, &SgAsmCilConstant::p_Value>;
37303};
37305 using node = SgAsmCilConstant;
37306 using base = SgAsmCilMetadata;
37307 static constexpr char const * const name{"AsmCilConstant"};
37308 static constexpr unsigned long variant{959};
37309 static constexpr bool concrete{true};
37310 using subclasses_t = mp::List<>;
37312};
37313template <> struct node_from_variant_t<959> { using type = SgAsmCilConstant; };
37314
37315// Class: AsmCilCustomAttribute
37316template <> struct describe_field_t<SgAsmCilCustomAttribute,uint32_t,&SgAsmCilCustomAttribute::p_Parent> {
37318 using field_type = uint32_t;
37319 static constexpr size_t position{0};
37320 static constexpr char const * const name{"Parent"};
37321 static constexpr char const * const typestr{"uint32_t"};
37322 static constexpr bool traverse{false};
37323 static constexpr auto mbr_ptr{&SgAsmCilCustomAttribute::p_Parent};
37324 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37325 using bind = Desc<SgAsmCilCustomAttribute, uint32_t SgAsmCilCustomAttribute::*, &SgAsmCilCustomAttribute::p_Parent>;
37326};
37327template <> struct describe_field_t<SgAsmCilCustomAttribute,uint32_t,&SgAsmCilCustomAttribute::p_Type> {
37329 using field_type = uint32_t;
37330 static constexpr size_t position{1};
37331 static constexpr char const * const name{"Type"};
37332 static constexpr char const * const typestr{"uint32_t"};
37333 static constexpr bool traverse{false};
37334 static constexpr auto mbr_ptr{&SgAsmCilCustomAttribute::p_Type};
37335 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37336 using bind = Desc<SgAsmCilCustomAttribute, uint32_t SgAsmCilCustomAttribute::*, &SgAsmCilCustomAttribute::p_Type>;
37337};
37338template <> struct describe_field_t<SgAsmCilCustomAttribute,uint32_t,&SgAsmCilCustomAttribute::p_Value> {
37340 using field_type = uint32_t;
37341 static constexpr size_t position{2};
37342 static constexpr char const * const name{"Value"};
37343 static constexpr char const * const typestr{"uint32_t"};
37344 static constexpr bool traverse{false};
37345 static constexpr auto mbr_ptr{&SgAsmCilCustomAttribute::p_Value};
37346 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37347 using bind = Desc<SgAsmCilCustomAttribute, uint32_t SgAsmCilCustomAttribute::*, &SgAsmCilCustomAttribute::p_Value>;
37348};
37351 using base = SgAsmCilMetadata;
37352 static constexpr char const * const name{"AsmCilCustomAttribute"};
37353 static constexpr unsigned long variant{960};
37354 static constexpr bool concrete{true};
37355 using subclasses_t = mp::List<>;
37357};
37358template <> struct node_from_variant_t<960> { using type = SgAsmCilCustomAttribute; };
37359
37360// Class: AsmCilDeclSecurity
37361template <> struct describe_field_t<SgAsmCilDeclSecurity,uint16_t,&SgAsmCilDeclSecurity::p_Action> {
37363 using field_type = uint16_t;
37364 static constexpr size_t position{0};
37365 static constexpr char const * const name{"Action"};
37366 static constexpr char const * const typestr{"uint16_t"};
37367 static constexpr bool traverse{false};
37368 static constexpr auto mbr_ptr{&SgAsmCilDeclSecurity::p_Action};
37369 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37370 using bind = Desc<SgAsmCilDeclSecurity, uint16_t SgAsmCilDeclSecurity::*, &SgAsmCilDeclSecurity::p_Action>;
37371};
37372template <> struct describe_field_t<SgAsmCilDeclSecurity,uint32_t,&SgAsmCilDeclSecurity::p_Parent> {
37374 using field_type = uint32_t;
37375 static constexpr size_t position{1};
37376 static constexpr char const * const name{"Parent"};
37377 static constexpr char const * const typestr{"uint32_t"};
37378 static constexpr bool traverse{false};
37379 static constexpr auto mbr_ptr{&SgAsmCilDeclSecurity::p_Parent};
37380 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37381 using bind = Desc<SgAsmCilDeclSecurity, uint32_t SgAsmCilDeclSecurity::*, &SgAsmCilDeclSecurity::p_Parent>;
37382};
37383template <> struct describe_field_t<SgAsmCilDeclSecurity,uint32_t,&SgAsmCilDeclSecurity::p_PermissionSet> {
37385 using field_type = uint32_t;
37386 static constexpr size_t position{2};
37387 static constexpr char const * const name{"PermissionSet"};
37388 static constexpr char const * const typestr{"uint32_t"};
37389 static constexpr bool traverse{false};
37390 static constexpr auto mbr_ptr{&SgAsmCilDeclSecurity::p_PermissionSet};
37391 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37392 using bind = Desc<SgAsmCilDeclSecurity, uint32_t SgAsmCilDeclSecurity::*, &SgAsmCilDeclSecurity::p_PermissionSet>;
37393};
37395 using node = SgAsmCilDeclSecurity;
37396 using base = SgAsmCilMetadata;
37397 static constexpr char const * const name{"AsmCilDeclSecurity"};
37398 static constexpr unsigned long variant{961};
37399 static constexpr bool concrete{true};
37400 using subclasses_t = mp::List<>;
37402};
37403template <> struct node_from_variant_t<961> { using type = SgAsmCilDeclSecurity; };
37404
37405// Class: AsmCilEvent
37406template <> struct describe_field_t<SgAsmCilEvent,uint16_t,&SgAsmCilEvent::p_EventFlags> {
37407 using parent = SgAsmCilEvent;
37408 using field_type = uint16_t;
37409 static constexpr size_t position{0};
37410 static constexpr char const * const name{"EventFlags"};
37411 static constexpr char const * const typestr{"uint16_t"};
37412 static constexpr bool traverse{false};
37413 static constexpr auto mbr_ptr{&SgAsmCilEvent::p_EventFlags};
37414 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37415 using bind = Desc<SgAsmCilEvent, uint16_t SgAsmCilEvent::*, &SgAsmCilEvent::p_EventFlags>;
37416};
37417template <> struct describe_field_t<SgAsmCilEvent,uint32_t,&SgAsmCilEvent::p_Name> {
37418 using parent = SgAsmCilEvent;
37419 using field_type = uint32_t;
37420 static constexpr size_t position{1};
37421 static constexpr char const * const name{"Name"};
37422 static constexpr char const * const typestr{"uint32_t"};
37423 static constexpr bool traverse{false};
37424 static constexpr auto mbr_ptr{&SgAsmCilEvent::p_Name};
37425 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37426 using bind = Desc<SgAsmCilEvent, uint32_t SgAsmCilEvent::*, &SgAsmCilEvent::p_Name>;
37427};
37428template <> struct describe_field_t<SgAsmCilEvent,uint32_t,&SgAsmCilEvent::p_EventType> {
37429 using parent = SgAsmCilEvent;
37430 using field_type = uint32_t;
37431 static constexpr size_t position{2};
37432 static constexpr char const * const name{"EventType"};
37433 static constexpr char const * const typestr{"uint32_t"};
37434 static constexpr bool traverse{false};
37435 static constexpr auto mbr_ptr{&SgAsmCilEvent::p_EventType};
37436 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37437 using bind = Desc<SgAsmCilEvent, uint32_t SgAsmCilEvent::*, &SgAsmCilEvent::p_EventType>;
37438};
37439template <> struct describe_node_t<SgAsmCilEvent> {
37440 using node = SgAsmCilEvent;
37441 using base = SgAsmCilMetadata;
37442 static constexpr char const * const name{"AsmCilEvent"};
37443 static constexpr unsigned long variant{962};
37444 static constexpr bool concrete{true};
37445 using subclasses_t = mp::List<>;
37447};
37448template <> struct node_from_variant_t<962> { using type = SgAsmCilEvent; };
37449
37450// Class: AsmCilEventMap
37451template <> struct describe_field_t<SgAsmCilEventMap,uint32_t,&SgAsmCilEventMap::p_Parent> {
37452 using parent = SgAsmCilEventMap;
37453 using field_type = uint32_t;
37454 static constexpr size_t position{0};
37455 static constexpr char const * const name{"Parent"};
37456 static constexpr char const * const typestr{"uint32_t"};
37457 static constexpr bool traverse{false};
37458 static constexpr auto mbr_ptr{&SgAsmCilEventMap::p_Parent};
37459 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37460 using bind = Desc<SgAsmCilEventMap, uint32_t SgAsmCilEventMap::*, &SgAsmCilEventMap::p_Parent>;
37461};
37462template <> struct describe_field_t<SgAsmCilEventMap,uint32_t,&SgAsmCilEventMap::p_EventList> {
37463 using parent = SgAsmCilEventMap;
37464 using field_type = uint32_t;
37465 static constexpr size_t position{1};
37466 static constexpr char const * const name{"EventList"};
37467 static constexpr char const * const typestr{"uint32_t"};
37468 static constexpr bool traverse{false};
37469 static constexpr auto mbr_ptr{&SgAsmCilEventMap::p_EventList};
37470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37471 using bind = Desc<SgAsmCilEventMap, uint32_t SgAsmCilEventMap::*, &SgAsmCilEventMap::p_EventList>;
37472};
37474 using node = SgAsmCilEventMap;
37475 using base = SgAsmCilMetadata;
37476 static constexpr char const * const name{"AsmCilEventMap"};
37477 static constexpr unsigned long variant{963};
37478 static constexpr bool concrete{true};
37479 using subclasses_t = mp::List<>;
37481};
37482template <> struct node_from_variant_t<963> { using type = SgAsmCilEventMap; };
37483
37484// Class: AsmCilExportedType
37485template <> struct describe_field_t<SgAsmCilExportedType,uint32_t,&SgAsmCilExportedType::p_EventFlags> {
37487 using field_type = uint32_t;
37488 static constexpr size_t position{0};
37489 static constexpr char const * const name{"EventFlags"};
37490 static constexpr char const * const typestr{"uint32_t"};
37491 static constexpr bool traverse{false};
37492 static constexpr auto mbr_ptr{&SgAsmCilExportedType::p_EventFlags};
37493 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37494 using bind = Desc<SgAsmCilExportedType, uint32_t SgAsmCilExportedType::*, &SgAsmCilExportedType::p_EventFlags>;
37495};
37496template <> struct describe_field_t<SgAsmCilExportedType,uint32_t,&SgAsmCilExportedType::p_TypeDefIdName> {
37498 using field_type = uint32_t;
37499 static constexpr size_t position{1};
37500 static constexpr char const * const name{"TypeDefIdName"};
37501 static constexpr char const * const typestr{"uint32_t"};
37502 static constexpr bool traverse{false};
37503 static constexpr auto mbr_ptr{&SgAsmCilExportedType::p_TypeDefIdName};
37504 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37505 using bind = Desc<SgAsmCilExportedType, uint32_t SgAsmCilExportedType::*, &SgAsmCilExportedType::p_TypeDefIdName>;
37506};
37507template <> struct describe_field_t<SgAsmCilExportedType,uint32_t,&SgAsmCilExportedType::p_TypeName> {
37509 using field_type = uint32_t;
37510 static constexpr size_t position{2};
37511 static constexpr char const * const name{"TypeName"};
37512 static constexpr char const * const typestr{"uint32_t"};
37513 static constexpr bool traverse{false};
37514 static constexpr auto mbr_ptr{&SgAsmCilExportedType::p_TypeName};
37515 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37516 using bind = Desc<SgAsmCilExportedType, uint32_t SgAsmCilExportedType::*, &SgAsmCilExportedType::p_TypeName>;
37517};
37518template <> struct describe_field_t<SgAsmCilExportedType,uint32_t,&SgAsmCilExportedType::p_TypeNamespace> {
37520 using field_type = uint32_t;
37521 static constexpr size_t position{3};
37522 static constexpr char const * const name{"TypeNamespace"};
37523 static constexpr char const * const typestr{"uint32_t"};
37524 static constexpr bool traverse{false};
37525 static constexpr auto mbr_ptr{&SgAsmCilExportedType::p_TypeNamespace};
37526 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37527 using bind = Desc<SgAsmCilExportedType, uint32_t SgAsmCilExportedType::*, &SgAsmCilExportedType::p_TypeNamespace>;
37528};
37529template <> struct describe_field_t<SgAsmCilExportedType,uint32_t,&SgAsmCilExportedType::p_Implementation> {
37531 using field_type = uint32_t;
37532 static constexpr size_t position{4};
37533 static constexpr char const * const name{"Implementation"};
37534 static constexpr char const * const typestr{"uint32_t"};
37535 static constexpr bool traverse{false};
37536 static constexpr auto mbr_ptr{&SgAsmCilExportedType::p_Implementation};
37537 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37538 using bind = Desc<SgAsmCilExportedType, uint32_t SgAsmCilExportedType::*, &SgAsmCilExportedType::p_Implementation>;
37539};
37549template <> struct node_from_variant_t<964> { using type = SgAsmCilExportedType; };
37550
37551// Class: AsmCilField
37552template <> struct describe_field_t<SgAsmCilField,uint16_t,&SgAsmCilField::p_Flags> {
37553 using parent = SgAsmCilField;
37554 using field_type = uint16_t;
37555 static constexpr size_t position{0};
37556 static constexpr char const * const name{"Flags"};
37557 static constexpr char const * const typestr{"uint16_t"};
37558 static constexpr bool traverse{false};
37559 static constexpr auto mbr_ptr{&SgAsmCilField::p_Flags};
37560 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37561 using bind = Desc<SgAsmCilField, uint16_t SgAsmCilField::*, &SgAsmCilField::p_Flags>;
37562};
37563template <> struct describe_field_t<SgAsmCilField,uint32_t,&SgAsmCilField::p_Name> {
37564 using parent = SgAsmCilField;
37565 using field_type = uint32_t;
37566 static constexpr size_t position{1};
37567 static constexpr char const * const name{"Name"};
37568 static constexpr char const * const typestr{"uint32_t"};
37569 static constexpr bool traverse{false};
37570 static constexpr auto mbr_ptr{&SgAsmCilField::p_Name};
37571 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37572 using bind = Desc<SgAsmCilField, uint32_t SgAsmCilField::*, &SgAsmCilField::p_Name>;
37573};
37574template <> struct describe_field_t<SgAsmCilField,uint32_t,&SgAsmCilField::p_Signature> {
37575 using parent = SgAsmCilField;
37576 using field_type = uint32_t;
37577 static constexpr size_t position{2};
37578 static constexpr char const * const name{"Signature"};
37579 static constexpr char const * const typestr{"uint32_t"};
37580 static constexpr bool traverse{false};
37581 static constexpr auto mbr_ptr{&SgAsmCilField::p_Signature};
37582 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37583 using bind = Desc<SgAsmCilField, uint32_t SgAsmCilField::*, &SgAsmCilField::p_Signature>;
37584};
37585template <> struct describe_node_t<SgAsmCilField> {
37586 using node = SgAsmCilField;
37587 using base = SgAsmCilMetadata;
37588 static constexpr char const * const name{"AsmCilField"};
37589 static constexpr unsigned long variant{965};
37590 static constexpr bool concrete{true};
37591 using subclasses_t = mp::List<>;
37593};
37594template <> struct node_from_variant_t<965> { using type = SgAsmCilField; };
37595
37596// Class: AsmCilFieldLayout
37597template <> struct describe_field_t<SgAsmCilFieldLayout,uint32_t,&SgAsmCilFieldLayout::p_Offset> {
37599 using field_type = uint32_t;
37600 static constexpr size_t position{0};
37601 static constexpr char const * const name{"Offset"};
37602 static constexpr char const * const typestr{"uint32_t"};
37603 static constexpr bool traverse{false};
37604 static constexpr auto mbr_ptr{&SgAsmCilFieldLayout::p_Offset};
37605 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37606 using bind = Desc<SgAsmCilFieldLayout, uint32_t SgAsmCilFieldLayout::*, &SgAsmCilFieldLayout::p_Offset>;
37607};
37608template <> struct describe_field_t<SgAsmCilFieldLayout,uint32_t,&SgAsmCilFieldLayout::p_Field> {
37610 using field_type = uint32_t;
37611 static constexpr size_t position{1};
37612 static constexpr char const * const name{"Field"};
37613 static constexpr char const * const typestr{"uint32_t"};
37614 static constexpr bool traverse{false};
37615 static constexpr auto mbr_ptr{&SgAsmCilFieldLayout::p_Field};
37616 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37617 using bind = Desc<SgAsmCilFieldLayout, uint32_t SgAsmCilFieldLayout::*, &SgAsmCilFieldLayout::p_Field>;
37618};
37620 using node = SgAsmCilFieldLayout;
37621 using base = SgAsmCilMetadata;
37622 static constexpr char const * const name{"AsmCilFieldLayout"};
37623 static constexpr unsigned long variant{966};
37624 static constexpr bool concrete{true};
37625 using subclasses_t = mp::List<>;
37627};
37628template <> struct node_from_variant_t<966> { using type = SgAsmCilFieldLayout; };
37629
37630// Class: AsmCilFieldMarshal
37631template <> struct describe_field_t<SgAsmCilFieldMarshal,uint32_t,&SgAsmCilFieldMarshal::p_Parent> {
37633 using field_type = uint32_t;
37634 static constexpr size_t position{0};
37635 static constexpr char const * const name{"Parent"};
37636 static constexpr char const * const typestr{"uint32_t"};
37637 static constexpr bool traverse{false};
37638 static constexpr auto mbr_ptr{&SgAsmCilFieldMarshal::p_Parent};
37639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37640 using bind = Desc<SgAsmCilFieldMarshal, uint32_t SgAsmCilFieldMarshal::*, &SgAsmCilFieldMarshal::p_Parent>;
37641};
37642template <> struct describe_field_t<SgAsmCilFieldMarshal,uint32_t,&SgAsmCilFieldMarshal::p_NativeType> {
37644 using field_type = uint32_t;
37645 static constexpr size_t position{1};
37646 static constexpr char const * const name{"NativeType"};
37647 static constexpr char const * const typestr{"uint32_t"};
37648 static constexpr bool traverse{false};
37649 static constexpr auto mbr_ptr{&SgAsmCilFieldMarshal::p_NativeType};
37650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37651 using bind = Desc<SgAsmCilFieldMarshal, uint32_t SgAsmCilFieldMarshal::*, &SgAsmCilFieldMarshal::p_NativeType>;
37652};
37654 using node = SgAsmCilFieldMarshal;
37655 using base = SgAsmCilMetadata;
37656 static constexpr char const * const name{"AsmCilFieldMarshal"};
37657 static constexpr unsigned long variant{967};
37658 static constexpr bool concrete{true};
37659 using subclasses_t = mp::List<>;
37661};
37662template <> struct node_from_variant_t<967> { using type = SgAsmCilFieldMarshal; };
37663
37664// Class: AsmCilFieldRVA
37665template <> struct describe_field_t<SgAsmCilFieldRVA,uint32_t,&SgAsmCilFieldRVA::p_RVA> {
37666 using parent = SgAsmCilFieldRVA;
37667 using field_type = uint32_t;
37668 static constexpr size_t position{0};
37669 static constexpr char const * const name{"RVA"};
37670 static constexpr char const * const typestr{"uint32_t"};
37671 static constexpr bool traverse{false};
37672 static constexpr auto mbr_ptr{&SgAsmCilFieldRVA::p_RVA};
37673 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37674 using bind = Desc<SgAsmCilFieldRVA, uint32_t SgAsmCilFieldRVA::*, &SgAsmCilFieldRVA::p_RVA>;
37675};
37676template <> struct describe_field_t<SgAsmCilFieldRVA,uint32_t,&SgAsmCilFieldRVA::p_Field> {
37677 using parent = SgAsmCilFieldRVA;
37678 using field_type = uint32_t;
37679 static constexpr size_t position{1};
37680 static constexpr char const * const name{"Field"};
37681 static constexpr char const * const typestr{"uint32_t"};
37682 static constexpr bool traverse{false};
37683 static constexpr auto mbr_ptr{&SgAsmCilFieldRVA::p_Field};
37684 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37685 using bind = Desc<SgAsmCilFieldRVA, uint32_t SgAsmCilFieldRVA::*, &SgAsmCilFieldRVA::p_Field>;
37686};
37688 using node = SgAsmCilFieldRVA;
37689 using base = SgAsmCilMetadata;
37690 static constexpr char const * const name{"AsmCilFieldRVA"};
37691 static constexpr unsigned long variant{968};
37692 static constexpr bool concrete{true};
37693 using subclasses_t = mp::List<>;
37695};
37696template <> struct node_from_variant_t<968> { using type = SgAsmCilFieldRVA; };
37697
37698// Class: AsmCilFile
37699template <> struct describe_field_t<SgAsmCilFile,uint32_t,&SgAsmCilFile::p_Flags> {
37700 using parent = SgAsmCilFile;
37701 using field_type = uint32_t;
37702 static constexpr size_t position{0};
37703 static constexpr char const * const name{"Flags"};
37704 static constexpr char const * const typestr{"uint32_t"};
37705 static constexpr bool traverse{false};
37706 static constexpr auto mbr_ptr{&SgAsmCilFile::p_Flags};
37707 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37708 using bind = Desc<SgAsmCilFile, uint32_t SgAsmCilFile::*, &SgAsmCilFile::p_Flags>;
37709};
37710template <> struct describe_field_t<SgAsmCilFile,uint32_t,&SgAsmCilFile::p_Name> {
37711 using parent = SgAsmCilFile;
37712 using field_type = uint32_t;
37713 static constexpr size_t position{1};
37714 static constexpr char const * const name{"Name"};
37715 static constexpr char const * const typestr{"uint32_t"};
37716 static constexpr bool traverse{false};
37717 static constexpr auto mbr_ptr{&SgAsmCilFile::p_Name};
37718 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37719 using bind = Desc<SgAsmCilFile, uint32_t SgAsmCilFile::*, &SgAsmCilFile::p_Name>;
37720};
37721template <> struct describe_field_t<SgAsmCilFile,uint32_t,&SgAsmCilFile::p_HashValue> {
37722 using parent = SgAsmCilFile;
37723 using field_type = uint32_t;
37724 static constexpr size_t position{2};
37725 static constexpr char const * const name{"HashValue"};
37726 static constexpr char const * const typestr{"uint32_t"};
37727 static constexpr bool traverse{false};
37728 static constexpr auto mbr_ptr{&SgAsmCilFile::p_HashValue};
37729 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37730 using bind = Desc<SgAsmCilFile, uint32_t SgAsmCilFile::*, &SgAsmCilFile::p_HashValue>;
37731};
37732template <> struct describe_node_t<SgAsmCilFile> {
37733 using node = SgAsmCilFile;
37734 using base = SgAsmCilMetadata;
37735 static constexpr char const * const name{"AsmCilFile"};
37736 static constexpr unsigned long variant{969};
37737 static constexpr bool concrete{true};
37738 using subclasses_t = mp::List<>;
37740};
37741template <> struct node_from_variant_t<969> { using type = SgAsmCilFile; };
37742
37743// Class: AsmCilGenericParam
37744template <> struct describe_field_t<SgAsmCilGenericParam,uint16_t,&SgAsmCilGenericParam::p_Number> {
37746 using field_type = uint16_t;
37747 static constexpr size_t position{0};
37748 static constexpr char const * const name{"Number"};
37749 static constexpr char const * const typestr{"uint16_t"};
37750 static constexpr bool traverse{false};
37751 static constexpr auto mbr_ptr{&SgAsmCilGenericParam::p_Number};
37752 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37753 using bind = Desc<SgAsmCilGenericParam, uint16_t SgAsmCilGenericParam::*, &SgAsmCilGenericParam::p_Number>;
37754};
37755template <> struct describe_field_t<SgAsmCilGenericParam,uint16_t,&SgAsmCilGenericParam::p_Flags> {
37757 using field_type = uint16_t;
37758 static constexpr size_t position{1};
37759 static constexpr char const * const name{"Flags"};
37760 static constexpr char const * const typestr{"uint16_t"};
37761 static constexpr bool traverse{false};
37762 static constexpr auto mbr_ptr{&SgAsmCilGenericParam::p_Flags};
37763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37764 using bind = Desc<SgAsmCilGenericParam, uint16_t SgAsmCilGenericParam::*, &SgAsmCilGenericParam::p_Flags>;
37765};
37766template <> struct describe_field_t<SgAsmCilGenericParam,uint32_t,&SgAsmCilGenericParam::p_Owner> {
37768 using field_type = uint32_t;
37769 static constexpr size_t position{2};
37770 static constexpr char const * const name{"Owner"};
37771 static constexpr char const * const typestr{"uint32_t"};
37772 static constexpr bool traverse{false};
37773 static constexpr auto mbr_ptr{&SgAsmCilGenericParam::p_Owner};
37774 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37775 using bind = Desc<SgAsmCilGenericParam, uint32_t SgAsmCilGenericParam::*, &SgAsmCilGenericParam::p_Owner>;
37776};
37777template <> struct describe_field_t<SgAsmCilGenericParam,uint32_t,&SgAsmCilGenericParam::p_Name> {
37779 using field_type = uint32_t;
37780 static constexpr size_t position{3};
37781 static constexpr char const * const name{"Name"};
37782 static constexpr char const * const typestr{"uint32_t"};
37783 static constexpr bool traverse{false};
37784 static constexpr auto mbr_ptr{&SgAsmCilGenericParam::p_Name};
37785 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37786 using bind = Desc<SgAsmCilGenericParam, uint32_t SgAsmCilGenericParam::*, &SgAsmCilGenericParam::p_Name>;
37787};
37797template <> struct node_from_variant_t<970> { using type = SgAsmCilGenericParam; };
37798
37799// Class: AsmCilGenericParamConstraint
37800template <> struct describe_field_t<SgAsmCilGenericParamConstraint,uint32_t,&SgAsmCilGenericParamConstraint::p_Owner> {
37802 using field_type = uint32_t;
37803 static constexpr size_t position{0};
37804 static constexpr char const * const name{"Owner"};
37805 static constexpr char const * const typestr{"uint32_t"};
37806 static constexpr bool traverse{false};
37807 static constexpr auto mbr_ptr{&SgAsmCilGenericParamConstraint::p_Owner};
37808 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37809 using bind = Desc<SgAsmCilGenericParamConstraint, uint32_t SgAsmCilGenericParamConstraint::*, &SgAsmCilGenericParamConstraint::p_Owner>;
37810};
37811template <> struct describe_field_t<SgAsmCilGenericParamConstraint,uint32_t,&SgAsmCilGenericParamConstraint::p_Constraint> {
37813 using field_type = uint32_t;
37814 static constexpr size_t position{1};
37815 static constexpr char const * const name{"Constraint"};
37816 static constexpr char const * const typestr{"uint32_t"};
37817 static constexpr bool traverse{false};
37818 static constexpr auto mbr_ptr{&SgAsmCilGenericParamConstraint::p_Constraint};
37819 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37820 using bind = Desc<SgAsmCilGenericParamConstraint, uint32_t SgAsmCilGenericParamConstraint::*, &SgAsmCilGenericParamConstraint::p_Constraint>;
37821};
37824 using base = SgAsmCilMetadata;
37825 static constexpr char const * const name{"AsmCilGenericParamConstraint"};
37826 static constexpr unsigned long variant{971};
37827 static constexpr bool concrete{true};
37828 using subclasses_t = mp::List<>;
37830};
37831template <> struct node_from_variant_t<971> { using type = SgAsmCilGenericParamConstraint; };
37832
37833// Class: AsmCilImplMap
37834template <> struct describe_field_t<SgAsmCilImplMap,uint16_t,&SgAsmCilImplMap::p_MappingFlags> {
37835 using parent = SgAsmCilImplMap;
37836 using field_type = uint16_t;
37837 static constexpr size_t position{0};
37838 static constexpr char const * const name{"MappingFlags"};
37839 static constexpr char const * const typestr{"uint16_t"};
37840 static constexpr bool traverse{false};
37841 static constexpr auto mbr_ptr{&SgAsmCilImplMap::p_MappingFlags};
37842 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37843 using bind = Desc<SgAsmCilImplMap, uint16_t SgAsmCilImplMap::*, &SgAsmCilImplMap::p_MappingFlags>;
37844};
37845template <> struct describe_field_t<SgAsmCilImplMap,uint32_t,&SgAsmCilImplMap::p_MemberForwarded> {
37846 using parent = SgAsmCilImplMap;
37847 using field_type = uint32_t;
37848 static constexpr size_t position{1};
37849 static constexpr char const * const name{"MemberForwarded"};
37850 static constexpr char const * const typestr{"uint32_t"};
37851 static constexpr bool traverse{false};
37852 static constexpr auto mbr_ptr{&SgAsmCilImplMap::p_MemberForwarded};
37853 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37854 using bind = Desc<SgAsmCilImplMap, uint32_t SgAsmCilImplMap::*, &SgAsmCilImplMap::p_MemberForwarded>;
37855};
37856template <> struct describe_field_t<SgAsmCilImplMap,uint32_t,&SgAsmCilImplMap::p_ImportName> {
37857 using parent = SgAsmCilImplMap;
37858 using field_type = uint32_t;
37859 static constexpr size_t position{2};
37860 static constexpr char const * const name{"ImportName"};
37861 static constexpr char const * const typestr{"uint32_t"};
37862 static constexpr bool traverse{false};
37863 static constexpr auto mbr_ptr{&SgAsmCilImplMap::p_ImportName};
37864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37865 using bind = Desc<SgAsmCilImplMap, uint32_t SgAsmCilImplMap::*, &SgAsmCilImplMap::p_ImportName>;
37866};
37867template <> struct describe_field_t<SgAsmCilImplMap,uint32_t,&SgAsmCilImplMap::p_ImportScope> {
37868 using parent = SgAsmCilImplMap;
37869 using field_type = uint32_t;
37870 static constexpr size_t position{3};
37871 static constexpr char const * const name{"ImportScope"};
37872 static constexpr char const * const typestr{"uint32_t"};
37873 static constexpr bool traverse{false};
37874 static constexpr auto mbr_ptr{&SgAsmCilImplMap::p_ImportScope};
37875 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37876 using bind = Desc<SgAsmCilImplMap, uint32_t SgAsmCilImplMap::*, &SgAsmCilImplMap::p_ImportScope>;
37877};
37887template <> struct node_from_variant_t<972> { using type = SgAsmCilImplMap; };
37888
37889// Class: AsmCilInterfaceImpl
37890template <> struct describe_field_t<SgAsmCilInterfaceImpl,uint32_t,&SgAsmCilInterfaceImpl::p_Class> {
37892 using field_type = uint32_t;
37893 static constexpr size_t position{0};
37894 static constexpr char const * const name{"Class"};
37895 static constexpr char const * const typestr{"uint32_t"};
37896 static constexpr bool traverse{false};
37897 static constexpr auto mbr_ptr{&SgAsmCilInterfaceImpl::p_Class};
37898 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37899 using bind = Desc<SgAsmCilInterfaceImpl, uint32_t SgAsmCilInterfaceImpl::*, &SgAsmCilInterfaceImpl::p_Class>;
37900};
37901template <> struct describe_field_t<SgAsmCilInterfaceImpl,uint32_t,&SgAsmCilInterfaceImpl::p_Interface> {
37903 using field_type = uint32_t;
37904 static constexpr size_t position{1};
37905 static constexpr char const * const name{"Interface"};
37906 static constexpr char const * const typestr{"uint32_t"};
37907 static constexpr bool traverse{false};
37908 static constexpr auto mbr_ptr{&SgAsmCilInterfaceImpl::p_Interface};
37909 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37910 using bind = Desc<SgAsmCilInterfaceImpl, uint32_t SgAsmCilInterfaceImpl::*, &SgAsmCilInterfaceImpl::p_Interface>;
37911};
37914 using base = SgAsmCilMetadata;
37915 static constexpr char const * const name{"AsmCilInterfaceImpl"};
37916 static constexpr unsigned long variant{973};
37917 static constexpr bool concrete{true};
37918 using subclasses_t = mp::List<>;
37920};
37921template <> struct node_from_variant_t<973> { using type = SgAsmCilInterfaceImpl; };
37922
37923// Class: AsmCilManifestResource
37924template <> struct describe_field_t<SgAsmCilManifestResource,uint32_t,&SgAsmCilManifestResource::p_Offset> {
37926 using field_type = uint32_t;
37927 static constexpr size_t position{0};
37928 static constexpr char const * const name{"Offset"};
37929 static constexpr char const * const typestr{"uint32_t"};
37930 static constexpr bool traverse{false};
37931 static constexpr auto mbr_ptr{&SgAsmCilManifestResource::p_Offset};
37932 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37933 using bind = Desc<SgAsmCilManifestResource, uint32_t SgAsmCilManifestResource::*, &SgAsmCilManifestResource::p_Offset>;
37934};
37935template <> struct describe_field_t<SgAsmCilManifestResource,uint32_t,&SgAsmCilManifestResource::p_Flags> {
37937 using field_type = uint32_t;
37938 static constexpr size_t position{1};
37939 static constexpr char const * const name{"Flags"};
37940 static constexpr char const * const typestr{"uint32_t"};
37941 static constexpr bool traverse{false};
37942 static constexpr auto mbr_ptr{&SgAsmCilManifestResource::p_Flags};
37943 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37944 using bind = Desc<SgAsmCilManifestResource, uint32_t SgAsmCilManifestResource::*, &SgAsmCilManifestResource::p_Flags>;
37945};
37946template <> struct describe_field_t<SgAsmCilManifestResource,uint32_t,&SgAsmCilManifestResource::p_Name> {
37948 using field_type = uint32_t;
37949 static constexpr size_t position{2};
37950 static constexpr char const * const name{"Name"};
37951 static constexpr char const * const typestr{"uint32_t"};
37952 static constexpr bool traverse{false};
37953 static constexpr auto mbr_ptr{&SgAsmCilManifestResource::p_Name};
37954 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37955 using bind = Desc<SgAsmCilManifestResource, uint32_t SgAsmCilManifestResource::*, &SgAsmCilManifestResource::p_Name>;
37956};
37957template <> struct describe_field_t<SgAsmCilManifestResource,uint32_t,&SgAsmCilManifestResource::p_Implementation> {
37959 using field_type = uint32_t;
37960 static constexpr size_t position{3};
37961 static constexpr char const * const name{"Implementation"};
37962 static constexpr char const * const typestr{"uint32_t"};
37963 static constexpr bool traverse{false};
37964 static constexpr auto mbr_ptr{&SgAsmCilManifestResource::p_Implementation};
37965 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37966 using bind = Desc<SgAsmCilManifestResource, uint32_t SgAsmCilManifestResource::*, &SgAsmCilManifestResource::p_Implementation>;
37967};
37977template <> struct node_from_variant_t<974> { using type = SgAsmCilManifestResource; };
37978
37979// Class: AsmCilMemberRef
37980template <> struct describe_field_t<SgAsmCilMemberRef,uint32_t,&SgAsmCilMemberRef::p_Class> {
37981 using parent = SgAsmCilMemberRef;
37982 using field_type = uint32_t;
37983 static constexpr size_t position{0};
37984 static constexpr char const * const name{"Class"};
37985 static constexpr char const * const typestr{"uint32_t"};
37986 static constexpr bool traverse{false};
37987 static constexpr auto mbr_ptr{&SgAsmCilMemberRef::p_Class};
37988 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
37989 using bind = Desc<SgAsmCilMemberRef, uint32_t SgAsmCilMemberRef::*, &SgAsmCilMemberRef::p_Class>;
37990};
37991template <> struct describe_field_t<SgAsmCilMemberRef,uint32_t,&SgAsmCilMemberRef::p_Name> {
37992 using parent = SgAsmCilMemberRef;
37993 using field_type = uint32_t;
37994 static constexpr size_t position{1};
37995 static constexpr char const * const name{"Name"};
37996 static constexpr char const * const typestr{"uint32_t"};
37997 static constexpr bool traverse{false};
37998 static constexpr auto mbr_ptr{&SgAsmCilMemberRef::p_Name};
37999 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38000 using bind = Desc<SgAsmCilMemberRef, uint32_t SgAsmCilMemberRef::*, &SgAsmCilMemberRef::p_Name>;
38001};
38002template <> struct describe_field_t<SgAsmCilMemberRef,uint32_t,&SgAsmCilMemberRef::p_Signature> {
38003 using parent = SgAsmCilMemberRef;
38004 using field_type = uint32_t;
38005 static constexpr size_t position{2};
38006 static constexpr char const * const name{"Signature"};
38007 static constexpr char const * const typestr{"uint32_t"};
38008 static constexpr bool traverse{false};
38009 static constexpr auto mbr_ptr{&SgAsmCilMemberRef::p_Signature};
38010 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38011 using bind = Desc<SgAsmCilMemberRef, uint32_t SgAsmCilMemberRef::*, &SgAsmCilMemberRef::p_Signature>;
38012};
38014 using node = SgAsmCilMemberRef;
38015 using base = SgAsmCilMetadata;
38016 static constexpr char const * const name{"AsmCilMemberRef"};
38017 static constexpr unsigned long variant{975};
38018 static constexpr bool concrete{true};
38019 using subclasses_t = mp::List<>;
38021};
38022template <> struct node_from_variant_t<975> { using type = SgAsmCilMemberRef; };
38023
38024// Class: AsmCilMethodDef
38025template <> struct describe_field_t<SgAsmCilMethodDef,uint32_t,&SgAsmCilMethodDef::p_RVA> {
38026 using parent = SgAsmCilMethodDef;
38027 using field_type = uint32_t;
38028 static constexpr size_t position{0};
38029 static constexpr char const * const name{"RVA"};
38030 static constexpr char const * const typestr{"uint32_t"};
38031 static constexpr bool traverse{false};
38032 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_RVA};
38033 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38034 using bind = Desc<SgAsmCilMethodDef, uint32_t SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_RVA>;
38035};
38036template <> struct describe_field_t<SgAsmCilMethodDef,uint32_t,&SgAsmCilMethodDef::p_ImplFlags> {
38037 using parent = SgAsmCilMethodDef;
38038 using field_type = uint32_t;
38039 static constexpr size_t position{1};
38040 static constexpr char const * const name{"ImplFlags"};
38041 static constexpr char const * const typestr{"uint32_t"};
38042 static constexpr bool traverse{false};
38043 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_ImplFlags};
38044 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38045 using bind = Desc<SgAsmCilMethodDef, uint32_t SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_ImplFlags>;
38046};
38047template <> struct describe_field_t<SgAsmCilMethodDef,uint16_t,&SgAsmCilMethodDef::p_Flags> {
38048 using parent = SgAsmCilMethodDef;
38049 using field_type = uint16_t;
38050 static constexpr size_t position{2};
38051 static constexpr char const * const name{"Flags"};
38052 static constexpr char const * const typestr{"uint16_t"};
38053 static constexpr bool traverse{false};
38054 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_Flags};
38055 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38056 using bind = Desc<SgAsmCilMethodDef, uint16_t SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_Flags>;
38057};
38058template <> struct describe_field_t<SgAsmCilMethodDef,uint32_t,&SgAsmCilMethodDef::p_Name> {
38059 using parent = SgAsmCilMethodDef;
38060 using field_type = uint32_t;
38061 static constexpr size_t position{3};
38062 static constexpr char const * const name{"Name"};
38063 static constexpr char const * const typestr{"uint32_t"};
38064 static constexpr bool traverse{false};
38065 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_Name};
38066 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38067 using bind = Desc<SgAsmCilMethodDef, uint32_t SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_Name>;
38068};
38069template <> struct describe_field_t<SgAsmCilMethodDef,uint32_t,&SgAsmCilMethodDef::p_Signature> {
38070 using parent = SgAsmCilMethodDef;
38071 using field_type = uint32_t;
38072 static constexpr size_t position{4};
38073 static constexpr char const * const name{"Signature"};
38074 static constexpr char const * const typestr{"uint32_t"};
38075 static constexpr bool traverse{false};
38076 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_Signature};
38077 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38078 using bind = Desc<SgAsmCilMethodDef, uint32_t SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_Signature>;
38079};
38080template <> struct describe_field_t<SgAsmCilMethodDef,uint32_t,&SgAsmCilMethodDef::p_ParamList> {
38081 using parent = SgAsmCilMethodDef;
38082 using field_type = uint32_t;
38083 static constexpr size_t position{5};
38084 static constexpr char const * const name{"ParamList"};
38085 static constexpr char const * const typestr{"uint32_t"};
38086 static constexpr bool traverse{false};
38087 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_ParamList};
38088 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38089 using bind = Desc<SgAsmCilMethodDef, uint32_t SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_ParamList>;
38090};
38091template <> struct describe_field_t<SgAsmCilMethodDef,SgAsmBlock*,&SgAsmCilMethodDef::p_body> {
38092 using parent = SgAsmCilMethodDef;
38093 using field_type = SgAsmBlock*;
38094 static constexpr size_t position{6};
38095 static constexpr char const * const name{"body"};
38096 static constexpr char const * const typestr{"SgAsmBlock*"};
38097 static constexpr bool traverse{false};
38098 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_body};
38099 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38100 using bind = Desc<SgAsmCilMethodDef, SgAsmBlock* SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_body>;
38101};
38102template <> struct describe_field_t<SgAsmCilMethodDef,bool,&SgAsmCilMethodDef::p_initLocals> {
38103 using parent = SgAsmCilMethodDef;
38104 using field_type = bool;
38105 static constexpr size_t position{7};
38106 static constexpr char const * const name{"initLocals"};
38107 static constexpr char const * const typestr{"bool"};
38108 static constexpr bool traverse{false};
38109 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_initLocals};
38110 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38111 using bind = Desc<SgAsmCilMethodDef, bool SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_initLocals>;
38112};
38113template <> struct describe_field_t<SgAsmCilMethodDef,uint32_t,&SgAsmCilMethodDef::p_stackSize> {
38114 using parent = SgAsmCilMethodDef;
38115 using field_type = uint32_t;
38116 static constexpr size_t position{8};
38117 static constexpr char const * const name{"stackSize"};
38118 static constexpr char const * const typestr{"uint32_t"};
38119 static constexpr bool traverse{false};
38120 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_stackSize};
38121 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38122 using bind = Desc<SgAsmCilMethodDef, uint32_t SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_stackSize>;
38123};
38124template <> struct describe_field_t<SgAsmCilMethodDef,bool,&SgAsmCilMethodDef::p_hasMoreSections> {
38125 using parent = SgAsmCilMethodDef;
38126 using field_type = bool;
38127 static constexpr size_t position{9};
38128 static constexpr char const * const name{"hasMoreSections"};
38129 static constexpr char const * const typestr{"bool"};
38130 static constexpr bool traverse{false};
38131 static constexpr auto mbr_ptr{&SgAsmCilMethodDef::p_hasMoreSections};
38132 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38133 using bind = Desc<SgAsmCilMethodDef, bool SgAsmCilMethodDef::*, &SgAsmCilMethodDef::p_hasMoreSections>;
38134};
38144template <> struct node_from_variant_t<976> { using type = SgAsmCilMethodDef; };
38145
38146// Class: AsmCilMethodImpl
38147template <> struct describe_field_t<SgAsmCilMethodImpl,uint32_t,&SgAsmCilMethodImpl::p_Class> {
38148 using parent = SgAsmCilMethodImpl;
38149 using field_type = uint32_t;
38150 static constexpr size_t position{0};
38151 static constexpr char const * const name{"Class"};
38152 static constexpr char const * const typestr{"uint32_t"};
38153 static constexpr bool traverse{false};
38154 static constexpr auto mbr_ptr{&SgAsmCilMethodImpl::p_Class};
38155 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38156 using bind = Desc<SgAsmCilMethodImpl, uint32_t SgAsmCilMethodImpl::*, &SgAsmCilMethodImpl::p_Class>;
38157};
38158template <> struct describe_field_t<SgAsmCilMethodImpl,uint32_t,&SgAsmCilMethodImpl::p_MethodBody> {
38159 using parent = SgAsmCilMethodImpl;
38160 using field_type = uint32_t;
38161 static constexpr size_t position{1};
38162 static constexpr char const * const name{"MethodBody"};
38163 static constexpr char const * const typestr{"uint32_t"};
38164 static constexpr bool traverse{false};
38165 static constexpr auto mbr_ptr{&SgAsmCilMethodImpl::p_MethodBody};
38166 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38167 using bind = Desc<SgAsmCilMethodImpl, uint32_t SgAsmCilMethodImpl::*, &SgAsmCilMethodImpl::p_MethodBody>;
38168};
38169template <> struct describe_field_t<SgAsmCilMethodImpl,uint32_t,&SgAsmCilMethodImpl::p_MethodDeclaration> {
38170 using parent = SgAsmCilMethodImpl;
38171 using field_type = uint32_t;
38172 static constexpr size_t position{2};
38173 static constexpr char const * const name{"MethodDeclaration"};
38174 static constexpr char const * const typestr{"uint32_t"};
38175 static constexpr bool traverse{false};
38176 static constexpr auto mbr_ptr{&SgAsmCilMethodImpl::p_MethodDeclaration};
38177 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38178 using bind = Desc<SgAsmCilMethodImpl, uint32_t SgAsmCilMethodImpl::*, &SgAsmCilMethodImpl::p_MethodDeclaration>;
38179};
38181 using node = SgAsmCilMethodImpl;
38182 using base = SgAsmCilMetadata;
38183 static constexpr char const * const name{"AsmCilMethodImpl"};
38184 static constexpr unsigned long variant{977};
38185 static constexpr bool concrete{true};
38186 using subclasses_t = mp::List<>;
38188};
38189template <> struct node_from_variant_t<977> { using type = SgAsmCilMethodImpl; };
38190
38191// Class: AsmCilMethodSemantics
38192template <> struct describe_field_t<SgAsmCilMethodSemantics,uint16_t,&SgAsmCilMethodSemantics::p_Semantics> {
38194 using field_type = uint16_t;
38195 static constexpr size_t position{0};
38196 static constexpr char const * const name{"Semantics"};
38197 static constexpr char const * const typestr{"uint16_t"};
38198 static constexpr bool traverse{false};
38199 static constexpr auto mbr_ptr{&SgAsmCilMethodSemantics::p_Semantics};
38200 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38201 using bind = Desc<SgAsmCilMethodSemantics, uint16_t SgAsmCilMethodSemantics::*, &SgAsmCilMethodSemantics::p_Semantics>;
38202};
38203template <> struct describe_field_t<SgAsmCilMethodSemantics,uint32_t,&SgAsmCilMethodSemantics::p_Method> {
38205 using field_type = uint32_t;
38206 static constexpr size_t position{1};
38207 static constexpr char const * const name{"Method"};
38208 static constexpr char const * const typestr{"uint32_t"};
38209 static constexpr bool traverse{false};
38210 static constexpr auto mbr_ptr{&SgAsmCilMethodSemantics::p_Method};
38211 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38212 using bind = Desc<SgAsmCilMethodSemantics, uint32_t SgAsmCilMethodSemantics::*, &SgAsmCilMethodSemantics::p_Method>;
38213};
38214template <> struct describe_field_t<SgAsmCilMethodSemantics,uint32_t,&SgAsmCilMethodSemantics::p_Association> {
38216 using field_type = uint32_t;
38217 static constexpr size_t position{2};
38218 static constexpr char const * const name{"Association"};
38219 static constexpr char const * const typestr{"uint32_t"};
38220 static constexpr bool traverse{false};
38221 static constexpr auto mbr_ptr{&SgAsmCilMethodSemantics::p_Association};
38222 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38223 using bind = Desc<SgAsmCilMethodSemantics, uint32_t SgAsmCilMethodSemantics::*, &SgAsmCilMethodSemantics::p_Association>;
38224};
38227 using base = SgAsmCilMetadata;
38228 static constexpr char const * const name{"AsmCilMethodSemantics"};
38229 static constexpr unsigned long variant{978};
38230 static constexpr bool concrete{true};
38231 using subclasses_t = mp::List<>;
38233};
38234template <> struct node_from_variant_t<978> { using type = SgAsmCilMethodSemantics; };
38235
38236// Class: AsmCilMethodSpec
38237template <> struct describe_field_t<SgAsmCilMethodSpec,uint32_t,&SgAsmCilMethodSpec::p_Method> {
38238 using parent = SgAsmCilMethodSpec;
38239 using field_type = uint32_t;
38240 static constexpr size_t position{0};
38241 static constexpr char const * const name{"Method"};
38242 static constexpr char const * const typestr{"uint32_t"};
38243 static constexpr bool traverse{false};
38244 static constexpr auto mbr_ptr{&SgAsmCilMethodSpec::p_Method};
38245 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38246 using bind = Desc<SgAsmCilMethodSpec, uint32_t SgAsmCilMethodSpec::*, &SgAsmCilMethodSpec::p_Method>;
38247};
38248template <> struct describe_field_t<SgAsmCilMethodSpec,uint32_t,&SgAsmCilMethodSpec::p_Instantiation> {
38249 using parent = SgAsmCilMethodSpec;
38250 using field_type = uint32_t;
38251 static constexpr size_t position{1};
38252 static constexpr char const * const name{"Instantiation"};
38253 static constexpr char const * const typestr{"uint32_t"};
38254 static constexpr bool traverse{false};
38255 static constexpr auto mbr_ptr{&SgAsmCilMethodSpec::p_Instantiation};
38256 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38257 using bind = Desc<SgAsmCilMethodSpec, uint32_t SgAsmCilMethodSpec::*, &SgAsmCilMethodSpec::p_Instantiation>;
38258};
38260 using node = SgAsmCilMethodSpec;
38261 using base = SgAsmCilMetadata;
38262 static constexpr char const * const name{"AsmCilMethodSpec"};
38263 static constexpr unsigned long variant{979};
38264 static constexpr bool concrete{true};
38265 using subclasses_t = mp::List<>;
38267};
38268template <> struct node_from_variant_t<979> { using type = SgAsmCilMethodSpec; };
38269
38270// Class: AsmCilModule
38271template <> struct describe_field_t<SgAsmCilModule,uint16_t,&SgAsmCilModule::p_Generation> {
38272 using parent = SgAsmCilModule;
38273 using field_type = uint16_t;
38274 static constexpr size_t position{0};
38275 static constexpr char const * const name{"Generation"};
38276 static constexpr char const * const typestr{"uint16_t"};
38277 static constexpr bool traverse{false};
38278 static constexpr auto mbr_ptr{&SgAsmCilModule::p_Generation};
38279 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38280 using bind = Desc<SgAsmCilModule, uint16_t SgAsmCilModule::*, &SgAsmCilModule::p_Generation>;
38281};
38282template <> struct describe_field_t<SgAsmCilModule,uint32_t,&SgAsmCilModule::p_Name> {
38283 using parent = SgAsmCilModule;
38284 using field_type = uint32_t;
38285 static constexpr size_t position{1};
38286 static constexpr char const * const name{"Name"};
38287 static constexpr char const * const typestr{"uint32_t"};
38288 static constexpr bool traverse{false};
38289 static constexpr auto mbr_ptr{&SgAsmCilModule::p_Name};
38290 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38291 using bind = Desc<SgAsmCilModule, uint32_t SgAsmCilModule::*, &SgAsmCilModule::p_Name>;
38292};
38293template <> struct describe_field_t<SgAsmCilModule,uint32_t,&SgAsmCilModule::p_Mvid> {
38294 using parent = SgAsmCilModule;
38295 using field_type = uint32_t;
38296 static constexpr size_t position{2};
38297 static constexpr char const * const name{"Mvid"};
38298 static constexpr char const * const typestr{"uint32_t"};
38299 static constexpr bool traverse{false};
38300 static constexpr auto mbr_ptr{&SgAsmCilModule::p_Mvid};
38301 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38302 using bind = Desc<SgAsmCilModule, uint32_t SgAsmCilModule::*, &SgAsmCilModule::p_Mvid>;
38303};
38304template <> struct describe_field_t<SgAsmCilModule,uint32_t,&SgAsmCilModule::p_Encld> {
38305 using parent = SgAsmCilModule;
38306 using field_type = uint32_t;
38307 static constexpr size_t position{3};
38308 static constexpr char const * const name{"Encld"};
38309 static constexpr char const * const typestr{"uint32_t"};
38310 static constexpr bool traverse{false};
38311 static constexpr auto mbr_ptr{&SgAsmCilModule::p_Encld};
38312 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38313 using bind = Desc<SgAsmCilModule, uint32_t SgAsmCilModule::*, &SgAsmCilModule::p_Encld>;
38314};
38315template <> struct describe_field_t<SgAsmCilModule,uint32_t,&SgAsmCilModule::p_EncBaseId> {
38316 using parent = SgAsmCilModule;
38317 using field_type = uint32_t;
38318 static constexpr size_t position{4};
38319 static constexpr char const * const name{"EncBaseId"};
38320 static constexpr char const * const typestr{"uint32_t"};
38321 static constexpr bool traverse{false};
38322 static constexpr auto mbr_ptr{&SgAsmCilModule::p_EncBaseId};
38323 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38324 using bind = Desc<SgAsmCilModule, uint32_t SgAsmCilModule::*, &SgAsmCilModule::p_EncBaseId>;
38325};
38335template <> struct node_from_variant_t<980> { using type = SgAsmCilModule; };
38336
38337// Class: AsmCilModuleRef
38338template <> struct describe_field_t<SgAsmCilModuleRef,uint32_t,&SgAsmCilModuleRef::p_Name> {
38339 using parent = SgAsmCilModuleRef;
38340 using field_type = uint32_t;
38341 static constexpr size_t position{0};
38342 static constexpr char const * const name{"Name"};
38343 static constexpr char const * const typestr{"uint32_t"};
38344 static constexpr bool traverse{false};
38345 static constexpr auto mbr_ptr{&SgAsmCilModuleRef::p_Name};
38346 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38347 using bind = Desc<SgAsmCilModuleRef, uint32_t SgAsmCilModuleRef::*, &SgAsmCilModuleRef::p_Name>;
38348};
38350 using node = SgAsmCilModuleRef;
38351 using base = SgAsmCilMetadata;
38352 static constexpr char const * const name{"AsmCilModuleRef"};
38353 static constexpr unsigned long variant{981};
38354 static constexpr bool concrete{true};
38355 using subclasses_t = mp::List<>;
38357};
38358template <> struct node_from_variant_t<981> { using type = SgAsmCilModuleRef; };
38359
38360// Class: AsmCilNestedClass
38361template <> struct describe_field_t<SgAsmCilNestedClass,uint32_t,&SgAsmCilNestedClass::p_NestedClass> {
38363 using field_type = uint32_t;
38364 static constexpr size_t position{0};
38365 static constexpr char const * const name{"NestedClass"};
38366 static constexpr char const * const typestr{"uint32_t"};
38367 static constexpr bool traverse{false};
38368 static constexpr auto mbr_ptr{&SgAsmCilNestedClass::p_NestedClass};
38369 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38370 using bind = Desc<SgAsmCilNestedClass, uint32_t SgAsmCilNestedClass::*, &SgAsmCilNestedClass::p_NestedClass>;
38371};
38372template <> struct describe_field_t<SgAsmCilNestedClass,uint32_t,&SgAsmCilNestedClass::p_EnclosingClass> {
38374 using field_type = uint32_t;
38375 static constexpr size_t position{1};
38376 static constexpr char const * const name{"EnclosingClass"};
38377 static constexpr char const * const typestr{"uint32_t"};
38378 static constexpr bool traverse{false};
38379 static constexpr auto mbr_ptr{&SgAsmCilNestedClass::p_EnclosingClass};
38380 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38381 using bind = Desc<SgAsmCilNestedClass, uint32_t SgAsmCilNestedClass::*, &SgAsmCilNestedClass::p_EnclosingClass>;
38382};
38384 using node = SgAsmCilNestedClass;
38385 using base = SgAsmCilMetadata;
38386 static constexpr char const * const name{"AsmCilNestedClass"};
38387 static constexpr unsigned long variant{982};
38388 static constexpr bool concrete{true};
38389 using subclasses_t = mp::List<>;
38391};
38392template <> struct node_from_variant_t<982> { using type = SgAsmCilNestedClass; };
38393
38394// Class: AsmCilParam
38395template <> struct describe_field_t<SgAsmCilParam,uint16_t,&SgAsmCilParam::p_Flags> {
38396 using parent = SgAsmCilParam;
38397 using field_type = uint16_t;
38398 static constexpr size_t position{0};
38399 static constexpr char const * const name{"Flags"};
38400 static constexpr char const * const typestr{"uint16_t"};
38401 static constexpr bool traverse{false};
38402 static constexpr auto mbr_ptr{&SgAsmCilParam::p_Flags};
38403 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38404 using bind = Desc<SgAsmCilParam, uint16_t SgAsmCilParam::*, &SgAsmCilParam::p_Flags>;
38405};
38406template <> struct describe_field_t<SgAsmCilParam,uint16_t,&SgAsmCilParam::p_Sequence> {
38407 using parent = SgAsmCilParam;
38408 using field_type = uint16_t;
38409 static constexpr size_t position{1};
38410 static constexpr char const * const name{"Sequence"};
38411 static constexpr char const * const typestr{"uint16_t"};
38412 static constexpr bool traverse{false};
38413 static constexpr auto mbr_ptr{&SgAsmCilParam::p_Sequence};
38414 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38415 using bind = Desc<SgAsmCilParam, uint16_t SgAsmCilParam::*, &SgAsmCilParam::p_Sequence>;
38416};
38417template <> struct describe_field_t<SgAsmCilParam,uint32_t,&SgAsmCilParam::p_Name> {
38418 using parent = SgAsmCilParam;
38419 using field_type = uint32_t;
38420 static constexpr size_t position{2};
38421 static constexpr char const * const name{"Name"};
38422 static constexpr char const * const typestr{"uint32_t"};
38423 static constexpr bool traverse{false};
38424 static constexpr auto mbr_ptr{&SgAsmCilParam::p_Name};
38425 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38426 using bind = Desc<SgAsmCilParam, uint32_t SgAsmCilParam::*, &SgAsmCilParam::p_Name>;
38427};
38428template <> struct describe_node_t<SgAsmCilParam> {
38429 using node = SgAsmCilParam;
38430 using base = SgAsmCilMetadata;
38431 static constexpr char const * const name{"AsmCilParam"};
38432 static constexpr unsigned long variant{983};
38433 static constexpr bool concrete{true};
38434 using subclasses_t = mp::List<>;
38436};
38437template <> struct node_from_variant_t<983> { using type = SgAsmCilParam; };
38438
38439// Class: AsmCilProperty
38440template <> struct describe_field_t<SgAsmCilProperty,uint16_t,&SgAsmCilProperty::p_Flags> {
38441 using parent = SgAsmCilProperty;
38442 using field_type = uint16_t;
38443 static constexpr size_t position{0};
38444 static constexpr char const * const name{"Flags"};
38445 static constexpr char const * const typestr{"uint16_t"};
38446 static constexpr bool traverse{false};
38447 static constexpr auto mbr_ptr{&SgAsmCilProperty::p_Flags};
38448 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38449 using bind = Desc<SgAsmCilProperty, uint16_t SgAsmCilProperty::*, &SgAsmCilProperty::p_Flags>;
38450};
38451template <> struct describe_field_t<SgAsmCilProperty,uint32_t,&SgAsmCilProperty::p_Name> {
38452 using parent = SgAsmCilProperty;
38453 using field_type = uint32_t;
38454 static constexpr size_t position{1};
38455 static constexpr char const * const name{"Name"};
38456 static constexpr char const * const typestr{"uint32_t"};
38457 static constexpr bool traverse{false};
38458 static constexpr auto mbr_ptr{&SgAsmCilProperty::p_Name};
38459 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38460 using bind = Desc<SgAsmCilProperty, uint32_t SgAsmCilProperty::*, &SgAsmCilProperty::p_Name>;
38461};
38462template <> struct describe_field_t<SgAsmCilProperty,uint32_t,&SgAsmCilProperty::p_Type> {
38463 using parent = SgAsmCilProperty;
38464 using field_type = uint32_t;
38465 static constexpr size_t position{2};
38466 static constexpr char const * const name{"Type"};
38467 static constexpr char const * const typestr{"uint32_t"};
38468 static constexpr bool traverse{false};
38469 static constexpr auto mbr_ptr{&SgAsmCilProperty::p_Type};
38470 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38471 using bind = Desc<SgAsmCilProperty, uint32_t SgAsmCilProperty::*, &SgAsmCilProperty::p_Type>;
38472};
38474 using node = SgAsmCilProperty;
38475 using base = SgAsmCilMetadata;
38476 static constexpr char const * const name{"AsmCilProperty"};
38477 static constexpr unsigned long variant{984};
38478 static constexpr bool concrete{true};
38479 using subclasses_t = mp::List<>;
38481};
38482template <> struct node_from_variant_t<984> { using type = SgAsmCilProperty; };
38483
38484// Class: AsmCilPropertyMap
38485template <> struct describe_field_t<SgAsmCilPropertyMap,uint32_t,&SgAsmCilPropertyMap::p_Parent> {
38487 using field_type = uint32_t;
38488 static constexpr size_t position{0};
38489 static constexpr char const * const name{"Parent"};
38490 static constexpr char const * const typestr{"uint32_t"};
38491 static constexpr bool traverse{false};
38492 static constexpr auto mbr_ptr{&SgAsmCilPropertyMap::p_Parent};
38493 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38494 using bind = Desc<SgAsmCilPropertyMap, uint32_t SgAsmCilPropertyMap::*, &SgAsmCilPropertyMap::p_Parent>;
38495};
38496template <> struct describe_field_t<SgAsmCilPropertyMap,uint32_t,&SgAsmCilPropertyMap::p_PropertyList> {
38498 using field_type = uint32_t;
38499 static constexpr size_t position{1};
38500 static constexpr char const * const name{"PropertyList"};
38501 static constexpr char const * const typestr{"uint32_t"};
38502 static constexpr bool traverse{false};
38503 static constexpr auto mbr_ptr{&SgAsmCilPropertyMap::p_PropertyList};
38504 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38505 using bind = Desc<SgAsmCilPropertyMap, uint32_t SgAsmCilPropertyMap::*, &SgAsmCilPropertyMap::p_PropertyList>;
38506};
38508 using node = SgAsmCilPropertyMap;
38509 using base = SgAsmCilMetadata;
38510 static constexpr char const * const name{"AsmCilPropertyMap"};
38511 static constexpr unsigned long variant{985};
38512 static constexpr bool concrete{true};
38513 using subclasses_t = mp::List<>;
38515};
38516template <> struct node_from_variant_t<985> { using type = SgAsmCilPropertyMap; };
38517
38518// Class: AsmCilStandAloneSig
38519template <> struct describe_field_t<SgAsmCilStandAloneSig,uint32_t,&SgAsmCilStandAloneSig::p_Signature> {
38521 using field_type = uint32_t;
38522 static constexpr size_t position{0};
38523 static constexpr char const * const name{"Signature"};
38524 static constexpr char const * const typestr{"uint32_t"};
38525 static constexpr bool traverse{false};
38526 static constexpr auto mbr_ptr{&SgAsmCilStandAloneSig::p_Signature};
38527 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38528 using bind = Desc<SgAsmCilStandAloneSig, uint32_t SgAsmCilStandAloneSig::*, &SgAsmCilStandAloneSig::p_Signature>;
38529};
38532 using base = SgAsmCilMetadata;
38533 static constexpr char const * const name{"AsmCilStandAloneSig"};
38534 static constexpr unsigned long variant{986};
38535 static constexpr bool concrete{true};
38536 using subclasses_t = mp::List<>;
38538};
38539template <> struct node_from_variant_t<986> { using type = SgAsmCilStandAloneSig; };
38540
38541// Class: AsmCilTypeDef
38542template <> struct describe_field_t<SgAsmCilTypeDef,uint32_t,&SgAsmCilTypeDef::p_Flags> {
38543 using parent = SgAsmCilTypeDef;
38544 using field_type = uint32_t;
38545 static constexpr size_t position{0};
38546 static constexpr char const * const name{"Flags"};
38547 static constexpr char const * const typestr{"uint32_t"};
38548 static constexpr bool traverse{false};
38549 static constexpr auto mbr_ptr{&SgAsmCilTypeDef::p_Flags};
38550 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38551 using bind = Desc<SgAsmCilTypeDef, uint32_t SgAsmCilTypeDef::*, &SgAsmCilTypeDef::p_Flags>;
38552};
38553template <> struct describe_field_t<SgAsmCilTypeDef,uint32_t,&SgAsmCilTypeDef::p_TypeName> {
38554 using parent = SgAsmCilTypeDef;
38555 using field_type = uint32_t;
38556 static constexpr size_t position{1};
38557 static constexpr char const * const name{"TypeName"};
38558 static constexpr char const * const typestr{"uint32_t"};
38559 static constexpr bool traverse{false};
38560 static constexpr auto mbr_ptr{&SgAsmCilTypeDef::p_TypeName};
38561 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38562 using bind = Desc<SgAsmCilTypeDef, uint32_t SgAsmCilTypeDef::*, &SgAsmCilTypeDef::p_TypeName>;
38563};
38564template <> struct describe_field_t<SgAsmCilTypeDef,uint32_t,&SgAsmCilTypeDef::p_TypeNamespace> {
38565 using parent = SgAsmCilTypeDef;
38566 using field_type = uint32_t;
38567 static constexpr size_t position{2};
38568 static constexpr char const * const name{"TypeNamespace"};
38569 static constexpr char const * const typestr{"uint32_t"};
38570 static constexpr bool traverse{false};
38571 static constexpr auto mbr_ptr{&SgAsmCilTypeDef::p_TypeNamespace};
38572 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38573 using bind = Desc<SgAsmCilTypeDef, uint32_t SgAsmCilTypeDef::*, &SgAsmCilTypeDef::p_TypeNamespace>;
38574};
38575template <> struct describe_field_t<SgAsmCilTypeDef,uint32_t,&SgAsmCilTypeDef::p_Extends> {
38576 using parent = SgAsmCilTypeDef;
38577 using field_type = uint32_t;
38578 static constexpr size_t position{3};
38579 static constexpr char const * const name{"Extends"};
38580 static constexpr char const * const typestr{"uint32_t"};
38581 static constexpr bool traverse{false};
38582 static constexpr auto mbr_ptr{&SgAsmCilTypeDef::p_Extends};
38583 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38584 using bind = Desc<SgAsmCilTypeDef, uint32_t SgAsmCilTypeDef::*, &SgAsmCilTypeDef::p_Extends>;
38585};
38586template <> struct describe_field_t<SgAsmCilTypeDef,uint32_t,&SgAsmCilTypeDef::p_FieldList> {
38587 using parent = SgAsmCilTypeDef;
38588 using field_type = uint32_t;
38589 static constexpr size_t position{4};
38590 static constexpr char const * const name{"FieldList"};
38591 static constexpr char const * const typestr{"uint32_t"};
38592 static constexpr bool traverse{false};
38593 static constexpr auto mbr_ptr{&SgAsmCilTypeDef::p_FieldList};
38594 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38595 using bind = Desc<SgAsmCilTypeDef, uint32_t SgAsmCilTypeDef::*, &SgAsmCilTypeDef::p_FieldList>;
38596};
38597template <> struct describe_field_t<SgAsmCilTypeDef,uint32_t,&SgAsmCilTypeDef::p_MethodList> {
38598 using parent = SgAsmCilTypeDef;
38599 using field_type = uint32_t;
38600 static constexpr size_t position{5};
38601 static constexpr char const * const name{"MethodList"};
38602 static constexpr char const * const typestr{"uint32_t"};
38603 static constexpr bool traverse{false};
38604 static constexpr auto mbr_ptr{&SgAsmCilTypeDef::p_MethodList};
38605 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38606 using bind = Desc<SgAsmCilTypeDef, uint32_t SgAsmCilTypeDef::*, &SgAsmCilTypeDef::p_MethodList>;
38607};
38617template <> struct node_from_variant_t<987> { using type = SgAsmCilTypeDef; };
38618
38619// Class: AsmCilTypeRef
38620template <> struct describe_field_t<SgAsmCilTypeRef,uint16_t,&SgAsmCilTypeRef::p_ResolutionScope> {
38621 using parent = SgAsmCilTypeRef;
38622 using field_type = uint16_t;
38623 static constexpr size_t position{0};
38624 static constexpr char const * const name{"ResolutionScope"};
38625 static constexpr char const * const typestr{"uint16_t"};
38626 static constexpr bool traverse{false};
38627 static constexpr auto mbr_ptr{&SgAsmCilTypeRef::p_ResolutionScope};
38628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38629 using bind = Desc<SgAsmCilTypeRef, uint16_t SgAsmCilTypeRef::*, &SgAsmCilTypeRef::p_ResolutionScope>;
38630};
38631template <> struct describe_field_t<SgAsmCilTypeRef,uint32_t,&SgAsmCilTypeRef::p_TypeName> {
38632 using parent = SgAsmCilTypeRef;
38633 using field_type = uint32_t;
38634 static constexpr size_t position{1};
38635 static constexpr char const * const name{"TypeName"};
38636 static constexpr char const * const typestr{"uint32_t"};
38637 static constexpr bool traverse{false};
38638 static constexpr auto mbr_ptr{&SgAsmCilTypeRef::p_TypeName};
38639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38640 using bind = Desc<SgAsmCilTypeRef, uint32_t SgAsmCilTypeRef::*, &SgAsmCilTypeRef::p_TypeName>;
38641};
38642template <> struct describe_field_t<SgAsmCilTypeRef,uint32_t,&SgAsmCilTypeRef::p_TypeNamespace> {
38643 using parent = SgAsmCilTypeRef;
38644 using field_type = uint32_t;
38645 static constexpr size_t position{2};
38646 static constexpr char const * const name{"TypeNamespace"};
38647 static constexpr char const * const typestr{"uint32_t"};
38648 static constexpr bool traverse{false};
38649 static constexpr auto mbr_ptr{&SgAsmCilTypeRef::p_TypeNamespace};
38650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38651 using bind = Desc<SgAsmCilTypeRef, uint32_t SgAsmCilTypeRef::*, &SgAsmCilTypeRef::p_TypeNamespace>;
38652};
38654 using node = SgAsmCilTypeRef;
38655 using base = SgAsmCilMetadata;
38656 static constexpr char const * const name{"AsmCilTypeRef"};
38657 static constexpr unsigned long variant{988};
38658 static constexpr bool concrete{true};
38659 using subclasses_t = mp::List<>;
38661};
38662template <> struct node_from_variant_t<988> { using type = SgAsmCilTypeRef; };
38663
38664// Class: AsmCilTypeSpec
38665template <> struct describe_field_t<SgAsmCilTypeSpec,uint32_t,&SgAsmCilTypeSpec::p_Signature> {
38666 using parent = SgAsmCilTypeSpec;
38667 using field_type = uint32_t;
38668 static constexpr size_t position{0};
38669 static constexpr char const * const name{"Signature"};
38670 static constexpr char const * const typestr{"uint32_t"};
38671 static constexpr bool traverse{false};
38672 static constexpr auto mbr_ptr{&SgAsmCilTypeSpec::p_Signature};
38673 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38674 using bind = Desc<SgAsmCilTypeSpec, uint32_t SgAsmCilTypeSpec::*, &SgAsmCilTypeSpec::p_Signature>;
38675};
38677 using node = SgAsmCilTypeSpec;
38678 using base = SgAsmCilMetadata;
38679 static constexpr char const * const name{"AsmCilTypeSpec"};
38680 static constexpr unsigned long variant{989};
38681 static constexpr bool concrete{true};
38682 using subclasses_t = mp::List<>;
38684};
38685template <> struct node_from_variant_t<989> { using type = SgAsmCilTypeSpec; };
38686
38687// Class: AdaParameterList
38688template <> struct describe_field_t<SgAdaParameterList,SgDeclarationStatementPtrList,&SgAdaParameterList::p_parameters> {
38689 using parent = SgAdaParameterList;
38690 using field_type = SgDeclarationStatementPtrList;
38691 static constexpr size_t position{0};
38692 static constexpr char const * const name{"parameters"};
38693 static constexpr char const * const typestr{"SgDeclarationStatementPtrList"};
38694 static constexpr bool traverse{true};
38695 static constexpr auto mbr_ptr{&SgAdaParameterList::p_parameters};
38696 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38697 using bind = Desc<SgAdaParameterList, SgDeclarationStatementPtrList SgAdaParameterList::*, &SgAdaParameterList::p_parameters>;
38698};
38700 using node = SgAdaParameterList;
38702 static constexpr char const * const name{"AdaParameterList"};
38703 static constexpr unsigned long variant{990};
38704 static constexpr bool concrete{true};
38705 using subclasses_t = mp::List<>;
38707};
38708template <> struct node_from_variant_t<990> { using type = SgAdaParameterList; };
38709
38710// Class: AsmCilMetadata
38712 using node = SgAsmCilMetadata;
38713 using base = SgAsmCilNode;
38714 static constexpr char const * const name{"AsmCilMetadata"};
38715 static constexpr unsigned long variant{991};
38716 static constexpr bool concrete{false};
38717 using subclasses_t = mp::List<SgAsmCilAssembly, SgAsmCilAssemblyOS, SgAsmCilAssemblyOSTable, SgAsmCilAssemblyProcessor, SgAsmCilAssemblyProcessorTable, SgAsmCilAssemblyRef, SgAsmCilAssemblyRefOS, SgAsmCilAssemblyRefOSTable, SgAsmCilAssemblyRefProcessor, SgAsmCilAssemblyRefProcessorTable, SgAsmCilAssemblyRefTable, SgAsmCilAssemblyTable, SgAsmCilClassLayout, SgAsmCilClassLayoutTable, SgAsmCilConstant, SgAsmCilConstantTable, SgAsmCilCustomAttribute, SgAsmCilCustomAttributeTable, SgAsmCilDeclSecurity, SgAsmCilDeclSecurityTable, SgAsmCilEvent, SgAsmCilEventMap, SgAsmCilEventMapTable, SgAsmCilEventTable, SgAsmCilExportedType, SgAsmCilExportedTypeTable, SgAsmCilField, SgAsmCilFieldLayout, SgAsmCilFieldLayoutTable, SgAsmCilFieldMarshal, SgAsmCilFieldMarshalTable, SgAsmCilFieldRVA, SgAsmCilFieldRVATable, SgAsmCilFieldTable, SgAsmCilFile, SgAsmCilFileTable, SgAsmCilGenericParamConstraint, SgAsmCilGenericParamConstraintTable, SgAsmCilGenericParam, SgAsmCilGenericParamTable, SgAsmCilImplMap, SgAsmCilImplMapTable, SgAsmCilInterfaceImpl, SgAsmCilInterfaceImplTable, SgAsmCilManifestResource, SgAsmCilManifestResourceTable, SgAsmCilMemberRef, SgAsmCilMemberRefTable, SgAsmCilMethodDef, SgAsmCilMethodDefTable, SgAsmCilMethodImpl, SgAsmCilMethodImplTable, SgAsmCilMethodSemantics, SgAsmCilMethodSemanticsTable, SgAsmCilMethodSpec, SgAsmCilMethodSpecTable, SgAsmCilModule, SgAsmCilModuleRef, SgAsmCilModuleRefTable, SgAsmCilModuleTable, SgAsmCilNestedClass, SgAsmCilNestedClassTable, SgAsmCilParam, SgAsmCilParamTable, SgAsmCilProperty, SgAsmCilPropertyMap, SgAsmCilPropertyMapTable, SgAsmCilPropertyTable, SgAsmCilStandAloneSig, SgAsmCilStandAloneSigTable, SgAsmCilTypeDef, SgAsmCilTypeDefTable, SgAsmCilTypeRef, SgAsmCilTypeRefTable, SgAsmCilTypeSpec, SgAsmCilTypeSpecTable>;
38718 using fields_t = mp::List<>;
38719};
38720template <> struct node_from_variant_t<991> { using type = SgAsmCilMetadata; };
38721
38722// Class: AsmCilMetadataRoot
38723template <> struct describe_field_t<SgAsmCilMetadataRoot,uint32_t,&SgAsmCilMetadataRoot::p_Signature> {
38725 using field_type = uint32_t;
38726 static constexpr size_t position{0};
38727 static constexpr char const * const name{"Signature"};
38728 static constexpr char const * const typestr{"uint32_t"};
38729 static constexpr bool traverse{false};
38730 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_Signature};
38731 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38732 using bind = Desc<SgAsmCilMetadataRoot, uint32_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_Signature>;
38733};
38734template <> struct describe_field_t<SgAsmCilMetadataRoot,uint16_t,&SgAsmCilMetadataRoot::p_MajorVersion> {
38736 using field_type = uint16_t;
38737 static constexpr size_t position{1};
38738 static constexpr char const * const name{"MajorVersion"};
38739 static constexpr char const * const typestr{"uint16_t"};
38740 static constexpr bool traverse{false};
38741 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_MajorVersion};
38742 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38743 using bind = Desc<SgAsmCilMetadataRoot, uint16_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_MajorVersion>;
38744};
38745template <> struct describe_field_t<SgAsmCilMetadataRoot,uint16_t,&SgAsmCilMetadataRoot::p_MinorVersion> {
38747 using field_type = uint16_t;
38748 static constexpr size_t position{2};
38749 static constexpr char const * const name{"MinorVersion"};
38750 static constexpr char const * const typestr{"uint16_t"};
38751 static constexpr bool traverse{false};
38752 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_MinorVersion};
38753 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38754 using bind = Desc<SgAsmCilMetadataRoot, uint16_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_MinorVersion>;
38755};
38756template <> struct describe_field_t<SgAsmCilMetadataRoot,uint32_t,&SgAsmCilMetadataRoot::p_Reserved0> {
38758 using field_type = uint32_t;
38759 static constexpr size_t position{3};
38760 static constexpr char const * const name{"Reserved0"};
38761 static constexpr char const * const typestr{"uint32_t"};
38762 static constexpr bool traverse{false};
38763 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_Reserved0};
38764 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38765 using bind = Desc<SgAsmCilMetadataRoot, uint32_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_Reserved0>;
38766};
38767template <> struct describe_field_t<SgAsmCilMetadataRoot,uint32_t,&SgAsmCilMetadataRoot::p_Length> {
38769 using field_type = uint32_t;
38770 static constexpr size_t position{4};
38771 static constexpr char const * const name{"Length"};
38772 static constexpr char const * const typestr{"uint32_t"};
38773 static constexpr bool traverse{false};
38774 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_Length};
38775 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38776 using bind = Desc<SgAsmCilMetadataRoot, uint32_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_Length>;
38777};
38778template <> struct describe_field_t<SgAsmCilMetadataRoot,std::string,&SgAsmCilMetadataRoot::p_Version> {
38780 using field_type = std::string;
38781 static constexpr size_t position{5};
38782 static constexpr char const * const name{"Version"};
38783 static constexpr char const * const typestr{"std::string"};
38784 static constexpr bool traverse{false};
38785 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_Version};
38786 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38787 using bind = Desc<SgAsmCilMetadataRoot, std::string SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_Version>;
38788};
38789template <> struct describe_field_t<SgAsmCilMetadataRoot,uint32_t,&SgAsmCilMetadataRoot::p_VersionPadding> {
38791 using field_type = uint32_t;
38792 static constexpr size_t position{6};
38793 static constexpr char const * const name{"VersionPadding"};
38794 static constexpr char const * const typestr{"uint32_t"};
38795 static constexpr bool traverse{false};
38796 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_VersionPadding};
38797 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38798 using bind = Desc<SgAsmCilMetadataRoot, uint32_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_VersionPadding>;
38799};
38800template <> struct describe_field_t<SgAsmCilMetadataRoot,uint16_t,&SgAsmCilMetadataRoot::p_Flags> {
38802 using field_type = uint16_t;
38803 static constexpr size_t position{7};
38804 static constexpr char const * const name{"Flags"};
38805 static constexpr char const * const typestr{"uint16_t"};
38806 static constexpr bool traverse{false};
38807 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_Flags};
38808 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38809 using bind = Desc<SgAsmCilMetadataRoot, uint16_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_Flags>;
38810};
38811template <> struct describe_field_t<SgAsmCilMetadataRoot,uint16_t,&SgAsmCilMetadataRoot::p_NumberOfStreams> {
38813 using field_type = uint16_t;
38814 static constexpr size_t position{8};
38815 static constexpr char const * const name{"NumberOfStreams"};
38816 static constexpr char const * const typestr{"uint16_t"};
38817 static constexpr bool traverse{false};
38818 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_NumberOfStreams};
38819 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38820 using bind = Desc<SgAsmCilMetadataRoot, uint16_t SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_NumberOfStreams>;
38821};
38822template <> struct describe_field_t<SgAsmCilMetadataRoot,std::vector<SgAsmCilDataStream*>,&SgAsmCilMetadataRoot::p_Streams> {
38824 using field_type = std::vector<SgAsmCilDataStream*>;
38825 static constexpr size_t position{9};
38826 static constexpr char const * const name{"Streams"};
38827 static constexpr char const * const typestr{"std::vector<SgAsmCilDataStream*>"};
38828 static constexpr bool traverse{true};
38829 static constexpr auto mbr_ptr{&SgAsmCilMetadataRoot::p_Streams};
38830 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38831 using bind = Desc<SgAsmCilMetadataRoot, std::vector<SgAsmCilDataStream*> SgAsmCilMetadataRoot::*, &SgAsmCilMetadataRoot::p_Streams>;
38832};
38842template <> struct node_from_variant_t<992> { using type = SgAsmCilMetadataRoot; };
38843
38844// Class: AsmCilDataStream
38845template <> struct describe_field_t<SgAsmCilDataStream,uint32_t,&SgAsmCilDataStream::p_Offset> {
38846 using parent = SgAsmCilDataStream;
38847 using field_type = uint32_t;
38848 static constexpr size_t position{0};
38849 static constexpr char const * const name{"Offset"};
38850 static constexpr char const * const typestr{"uint32_t"};
38851 static constexpr bool traverse{false};
38852 static constexpr auto mbr_ptr{&SgAsmCilDataStream::p_Offset};
38853 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38854 using bind = Desc<SgAsmCilDataStream, uint32_t SgAsmCilDataStream::*, &SgAsmCilDataStream::p_Offset>;
38855};
38856template <> struct describe_field_t<SgAsmCilDataStream,uint32_t,&SgAsmCilDataStream::p_Size> {
38857 using parent = SgAsmCilDataStream;
38858 using field_type = uint32_t;
38859 static constexpr size_t position{1};
38860 static constexpr char const * const name{"Size"};
38861 static constexpr char const * const typestr{"uint32_t"};
38862 static constexpr bool traverse{false};
38863 static constexpr auto mbr_ptr{&SgAsmCilDataStream::p_Size};
38864 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38865 using bind = Desc<SgAsmCilDataStream, uint32_t SgAsmCilDataStream::*, &SgAsmCilDataStream::p_Size>;
38866};
38867template <> struct describe_field_t<SgAsmCilDataStream,std::string,&SgAsmCilDataStream::p_Name> {
38868 using parent = SgAsmCilDataStream;
38869 using field_type = std::string;
38870 static constexpr size_t position{2};
38871 static constexpr char const * const name{"Name"};
38872 static constexpr char const * const typestr{"std::string"};
38873 static constexpr bool traverse{false};
38874 static constexpr auto mbr_ptr{&SgAsmCilDataStream::p_Name};
38875 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38876 using bind = Desc<SgAsmCilDataStream, std::string SgAsmCilDataStream::*, &SgAsmCilDataStream::p_Name>;
38877};
38878template <> struct describe_field_t<SgAsmCilDataStream,uint32_t,&SgAsmCilDataStream::p_NamePadding> {
38879 using parent = SgAsmCilDataStream;
38880 using field_type = uint32_t;
38881 static constexpr size_t position{3};
38882 static constexpr char const * const name{"NamePadding"};
38883 static constexpr char const * const typestr{"uint32_t"};
38884 static constexpr bool traverse{false};
38885 static constexpr auto mbr_ptr{&SgAsmCilDataStream::p_NamePadding};
38886 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38887 using bind = Desc<SgAsmCilDataStream, uint32_t SgAsmCilDataStream::*, &SgAsmCilDataStream::p_NamePadding>;
38888};
38898template <> struct node_from_variant_t<993> { using type = SgAsmCilDataStream; };
38899
38900// Class: AsmCilMetadataHeap
38901template <> struct describe_field_t<SgAsmCilMetadataHeap,uint32_t,&SgAsmCilMetadataHeap::p_ReservedAlwaysZero> {
38903 using field_type = uint32_t;
38904 static constexpr size_t position{0};
38905 static constexpr char const * const name{"ReservedAlwaysZero"};
38906 static constexpr char const * const typestr{"uint32_t"};
38907 static constexpr bool traverse{false};
38908 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ReservedAlwaysZero};
38909 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38910 using bind = Desc<SgAsmCilMetadataHeap, uint32_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ReservedAlwaysZero>;
38911};
38912template <> struct describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_MajorVersion> {
38914 using field_type = uint8_t;
38915 static constexpr size_t position{1};
38916 static constexpr char const * const name{"MajorVersion"};
38917 static constexpr char const * const typestr{"uint8_t"};
38918 static constexpr bool traverse{false};
38919 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_MajorVersion};
38920 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38921 using bind = Desc<SgAsmCilMetadataHeap, uint8_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_MajorVersion>;
38922};
38923template <> struct describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_MinorVersion> {
38925 using field_type = uint8_t;
38926 static constexpr size_t position{2};
38927 static constexpr char const * const name{"MinorVersion"};
38928 static constexpr char const * const typestr{"uint8_t"};
38929 static constexpr bool traverse{false};
38930 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_MinorVersion};
38931 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38932 using bind = Desc<SgAsmCilMetadataHeap, uint8_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_MinorVersion>;
38933};
38934template <> struct describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_HeapSizes> {
38936 using field_type = uint8_t;
38937 static constexpr size_t position{3};
38938 static constexpr char const * const name{"HeapSizes"};
38939 static constexpr char const * const typestr{"uint8_t"};
38940 static constexpr bool traverse{false};
38941 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_HeapSizes};
38942 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38943 using bind = Desc<SgAsmCilMetadataHeap, uint8_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_HeapSizes>;
38944};
38945template <> struct describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_ReservedAlwaysOne> {
38947 using field_type = uint8_t;
38948 static constexpr size_t position{4};
38949 static constexpr char const * const name{"ReservedAlwaysOne"};
38950 static constexpr char const * const typestr{"uint8_t"};
38951 static constexpr bool traverse{false};
38952 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ReservedAlwaysOne};
38953 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38954 using bind = Desc<SgAsmCilMetadataHeap, uint8_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ReservedAlwaysOne>;
38955};
38956template <> struct describe_field_t<SgAsmCilMetadataHeap,uint64_t,&SgAsmCilMetadataHeap::p_Valid> {
38958 using field_type = uint64_t;
38959 static constexpr size_t position{5};
38960 static constexpr char const * const name{"Valid"};
38961 static constexpr char const * const typestr{"uint64_t"};
38962 static constexpr bool traverse{false};
38963 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_Valid};
38964 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38965 using bind = Desc<SgAsmCilMetadataHeap, uint64_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_Valid>;
38966};
38967template <> struct describe_field_t<SgAsmCilMetadataHeap,uint64_t,&SgAsmCilMetadataHeap::p_Sorted> {
38969 using field_type = uint64_t;
38970 static constexpr size_t position{6};
38971 static constexpr char const * const name{"Sorted"};
38972 static constexpr char const * const typestr{"uint64_t"};
38973 static constexpr bool traverse{false};
38974 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_Sorted};
38975 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38976 using bind = Desc<SgAsmCilMetadataHeap, uint64_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_Sorted>;
38977};
38978template <> struct describe_field_t<SgAsmCilMetadataHeap,std::vector<uint32_t>,&SgAsmCilMetadataHeap::p_NumberOfRows> {
38980 using field_type = std::vector<uint32_t>;
38981 static constexpr size_t position{7};
38982 static constexpr char const * const name{"NumberOfRows"};
38983 static constexpr char const * const typestr{"std::vector<uint32_t>"};
38984 static constexpr bool traverse{false};
38985 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_NumberOfRows};
38986 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38987 using bind = Desc<SgAsmCilMetadataHeap, std::vector<uint32_t> SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_NumberOfRows>;
38988};
38989template <> struct describe_field_t<SgAsmCilMetadataHeap,uint64_t,&SgAsmCilMetadataHeap::p_DataSizeFlags> {
38991 using field_type = uint64_t;
38992 static constexpr size_t position{8};
38993 static constexpr char const * const name{"DataSizeFlags"};
38994 static constexpr char const * const typestr{"uint64_t"};
38995 static constexpr bool traverse{false};
38996 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_DataSizeFlags};
38997 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
38998 using bind = Desc<SgAsmCilMetadataHeap, uint64_t SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_DataSizeFlags>;
38999};
39000template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyTable*,&SgAsmCilMetadataHeap::p_AssemblyTable> {
39003 static constexpr size_t position{9};
39004 static constexpr char const * const name{"AssemblyTable"};
39005 static constexpr char const * const typestr{"SgAsmCilAssemblyTable*"};
39006 static constexpr bool traverse{true};
39007 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_AssemblyTable};
39008 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39009 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilAssemblyTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_AssemblyTable>;
39010};
39011template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyOSTable*,&SgAsmCilMetadataHeap::p_AssemblyOSTable> {
39014 static constexpr size_t position{10};
39015 static constexpr char const * const name{"AssemblyOSTable"};
39016 static constexpr char const * const typestr{"SgAsmCilAssemblyOSTable*"};
39017 static constexpr bool traverse{true};
39018 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_AssemblyOSTable};
39019 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39020 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilAssemblyOSTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_AssemblyOSTable>;
39021};
39022template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyProcessorTable*,&SgAsmCilMetadataHeap::p_AssemblyProcessorTable> {
39025 static constexpr size_t position{11};
39026 static constexpr char const * const name{"AssemblyProcessorTable"};
39027 static constexpr char const * const typestr{"SgAsmCilAssemblyProcessorTable*"};
39028 static constexpr bool traverse{true};
39029 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_AssemblyProcessorTable};
39030 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39031 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilAssemblyProcessorTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_AssemblyProcessorTable>;
39032};
39033template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyRefTable*,&SgAsmCilMetadataHeap::p_AssemblyRefTable> {
39036 static constexpr size_t position{12};
39037 static constexpr char const * const name{"AssemblyRefTable"};
39038 static constexpr char const * const typestr{"SgAsmCilAssemblyRefTable*"};
39039 static constexpr bool traverse{true};
39040 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_AssemblyRefTable};
39041 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39042 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilAssemblyRefTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_AssemblyRefTable>;
39043};
39044template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyRefOSTable*,&SgAsmCilMetadataHeap::p_AssemblyRefOSTable> {
39047 static constexpr size_t position{13};
39048 static constexpr char const * const name{"AssemblyRefOSTable"};
39049 static constexpr char const * const typestr{"SgAsmCilAssemblyRefOSTable*"};
39050 static constexpr bool traverse{true};
39051 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_AssemblyRefOSTable};
39052 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39053 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilAssemblyRefOSTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_AssemblyRefOSTable>;
39054};
39055template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyRefProcessorTable*,&SgAsmCilMetadataHeap::p_AssemblyRefProcessorTable> {
39058 static constexpr size_t position{14};
39059 static constexpr char const * const name{"AssemblyRefProcessorTable"};
39060 static constexpr char const * const typestr{"SgAsmCilAssemblyRefProcessorTable*"};
39061 static constexpr bool traverse{true};
39062 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_AssemblyRefProcessorTable};
39063 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39064 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilAssemblyRefProcessorTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_AssemblyRefProcessorTable>;
39065};
39066template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilClassLayoutTable*,&SgAsmCilMetadataHeap::p_ClassLayoutTable> {
39069 static constexpr size_t position{15};
39070 static constexpr char const * const name{"ClassLayoutTable"};
39071 static constexpr char const * const typestr{"SgAsmCilClassLayoutTable*"};
39072 static constexpr bool traverse{true};
39073 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ClassLayoutTable};
39074 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39075 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilClassLayoutTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ClassLayoutTable>;
39076};
39077template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilConstantTable*,&SgAsmCilMetadataHeap::p_ConstantTable> {
39080 static constexpr size_t position{16};
39081 static constexpr char const * const name{"ConstantTable"};
39082 static constexpr char const * const typestr{"SgAsmCilConstantTable*"};
39083 static constexpr bool traverse{true};
39084 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ConstantTable};
39085 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39086 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilConstantTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ConstantTable>;
39087};
39088template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilCustomAttributeTable*,&SgAsmCilMetadataHeap::p_CustomAttributeTable> {
39091 static constexpr size_t position{17};
39092 static constexpr char const * const name{"CustomAttributeTable"};
39093 static constexpr char const * const typestr{"SgAsmCilCustomAttributeTable*"};
39094 static constexpr bool traverse{true};
39095 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_CustomAttributeTable};
39096 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39097 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilCustomAttributeTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_CustomAttributeTable>;
39098};
39099template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilDeclSecurityTable*,&SgAsmCilMetadataHeap::p_DeclSecurityTable> {
39102 static constexpr size_t position{18};
39103 static constexpr char const * const name{"DeclSecurityTable"};
39104 static constexpr char const * const typestr{"SgAsmCilDeclSecurityTable*"};
39105 static constexpr bool traverse{true};
39106 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_DeclSecurityTable};
39107 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39108 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilDeclSecurityTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_DeclSecurityTable>;
39109};
39110template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilEventTable*,&SgAsmCilMetadataHeap::p_EventTable> {
39113 static constexpr size_t position{19};
39114 static constexpr char const * const name{"EventTable"};
39115 static constexpr char const * const typestr{"SgAsmCilEventTable*"};
39116 static constexpr bool traverse{true};
39117 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_EventTable};
39118 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39119 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilEventTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_EventTable>;
39120};
39121template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilEventMapTable*,&SgAsmCilMetadataHeap::p_EventMapTable> {
39124 static constexpr size_t position{20};
39125 static constexpr char const * const name{"EventMapTable"};
39126 static constexpr char const * const typestr{"SgAsmCilEventMapTable*"};
39127 static constexpr bool traverse{true};
39128 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_EventMapTable};
39129 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39130 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilEventMapTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_EventMapTable>;
39131};
39132template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilExportedTypeTable*,&SgAsmCilMetadataHeap::p_ExportedTypeTable> {
39135 static constexpr size_t position{21};
39136 static constexpr char const * const name{"ExportedTypeTable"};
39137 static constexpr char const * const typestr{"SgAsmCilExportedTypeTable*"};
39138 static constexpr bool traverse{true};
39139 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ExportedTypeTable};
39140 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39141 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilExportedTypeTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ExportedTypeTable>;
39142};
39143template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldTable*,&SgAsmCilMetadataHeap::p_FieldTable> {
39146 static constexpr size_t position{22};
39147 static constexpr char const * const name{"FieldTable"};
39148 static constexpr char const * const typestr{"SgAsmCilFieldTable*"};
39149 static constexpr bool traverse{true};
39150 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_FieldTable};
39151 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39152 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilFieldTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_FieldTable>;
39153};
39154template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldLayoutTable*,&SgAsmCilMetadataHeap::p_FieldLayoutTable> {
39157 static constexpr size_t position{23};
39158 static constexpr char const * const name{"FieldLayoutTable"};
39159 static constexpr char const * const typestr{"SgAsmCilFieldLayoutTable*"};
39160 static constexpr bool traverse{true};
39161 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_FieldLayoutTable};
39162 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39163 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilFieldLayoutTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_FieldLayoutTable>;
39164};
39165template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldMarshalTable*,&SgAsmCilMetadataHeap::p_FieldMarshalTable> {
39168 static constexpr size_t position{24};
39169 static constexpr char const * const name{"FieldMarshalTable"};
39170 static constexpr char const * const typestr{"SgAsmCilFieldMarshalTable*"};
39171 static constexpr bool traverse{true};
39172 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_FieldMarshalTable};
39173 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39174 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilFieldMarshalTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_FieldMarshalTable>;
39175};
39176template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldRVATable*,&SgAsmCilMetadataHeap::p_FieldRVATable> {
39179 static constexpr size_t position{25};
39180 static constexpr char const * const name{"FieldRVATable"};
39181 static constexpr char const * const typestr{"SgAsmCilFieldRVATable*"};
39182 static constexpr bool traverse{true};
39183 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_FieldRVATable};
39184 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39185 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilFieldRVATable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_FieldRVATable>;
39186};
39187template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFileTable*,&SgAsmCilMetadataHeap::p_FileTable> {
39190 static constexpr size_t position{26};
39191 static constexpr char const * const name{"FileTable"};
39192 static constexpr char const * const typestr{"SgAsmCilFileTable*"};
39193 static constexpr bool traverse{true};
39194 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_FileTable};
39195 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39196 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilFileTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_FileTable>;
39197};
39198template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilGenericParamTable*,&SgAsmCilMetadataHeap::p_GenericParamTable> {
39201 static constexpr size_t position{27};
39202 static constexpr char const * const name{"GenericParamTable"};
39203 static constexpr char const * const typestr{"SgAsmCilGenericParamTable*"};
39204 static constexpr bool traverse{true};
39205 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_GenericParamTable};
39206 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39207 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilGenericParamTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_GenericParamTable>;
39208};
39209template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilGenericParamConstraintTable*,&SgAsmCilMetadataHeap::p_GenericParamConstraintTable> {
39212 static constexpr size_t position{28};
39213 static constexpr char const * const name{"GenericParamConstraintTable"};
39214 static constexpr char const * const typestr{"SgAsmCilGenericParamConstraintTable*"};
39215 static constexpr bool traverse{true};
39216 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_GenericParamConstraintTable};
39217 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39218 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilGenericParamConstraintTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_GenericParamConstraintTable>;
39219};
39220template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilImplMapTable*,&SgAsmCilMetadataHeap::p_ImplMapTable> {
39223 static constexpr size_t position{29};
39224 static constexpr char const * const name{"ImplMapTable"};
39225 static constexpr char const * const typestr{"SgAsmCilImplMapTable*"};
39226 static constexpr bool traverse{true};
39227 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ImplMapTable};
39228 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39229 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilImplMapTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ImplMapTable>;
39230};
39231template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilInterfaceImplTable*,&SgAsmCilMetadataHeap::p_InterfaceImplTable> {
39234 static constexpr size_t position{30};
39235 static constexpr char const * const name{"InterfaceImplTable"};
39236 static constexpr char const * const typestr{"SgAsmCilInterfaceImplTable*"};
39237 static constexpr bool traverse{true};
39238 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_InterfaceImplTable};
39239 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39240 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilInterfaceImplTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_InterfaceImplTable>;
39241};
39242template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilManifestResourceTable*,&SgAsmCilMetadataHeap::p_ManifestResourceTable> {
39245 static constexpr size_t position{31};
39246 static constexpr char const * const name{"ManifestResourceTable"};
39247 static constexpr char const * const typestr{"SgAsmCilManifestResourceTable*"};
39248 static constexpr bool traverse{true};
39249 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ManifestResourceTable};
39250 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39251 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilManifestResourceTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ManifestResourceTable>;
39252};
39253template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMemberRefTable*,&SgAsmCilMetadataHeap::p_MemberRefTable> {
39256 static constexpr size_t position{32};
39257 static constexpr char const * const name{"MemberRefTable"};
39258 static constexpr char const * const typestr{"SgAsmCilMemberRefTable*"};
39259 static constexpr bool traverse{true};
39260 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_MemberRefTable};
39261 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39262 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilMemberRefTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_MemberRefTable>;
39263};
39264template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodDefTable*,&SgAsmCilMetadataHeap::p_MethodDefTable> {
39267 static constexpr size_t position{33};
39268 static constexpr char const * const name{"MethodDefTable"};
39269 static constexpr char const * const typestr{"SgAsmCilMethodDefTable*"};
39270 static constexpr bool traverse{true};
39271 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_MethodDefTable};
39272 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39273 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilMethodDefTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_MethodDefTable>;
39274};
39275template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodImplTable*,&SgAsmCilMetadataHeap::p_MethodImplTable> {
39278 static constexpr size_t position{34};
39279 static constexpr char const * const name{"MethodImplTable"};
39280 static constexpr char const * const typestr{"SgAsmCilMethodImplTable*"};
39281 static constexpr bool traverse{true};
39282 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_MethodImplTable};
39283 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39284 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilMethodImplTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_MethodImplTable>;
39285};
39286template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodSemanticsTable*,&SgAsmCilMetadataHeap::p_MethodSemanticsTable> {
39289 static constexpr size_t position{35};
39290 static constexpr char const * const name{"MethodSemanticsTable"};
39291 static constexpr char const * const typestr{"SgAsmCilMethodSemanticsTable*"};
39292 static constexpr bool traverse{true};
39293 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_MethodSemanticsTable};
39294 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39295 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilMethodSemanticsTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_MethodSemanticsTable>;
39296};
39297template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodSpecTable*,&SgAsmCilMetadataHeap::p_MethodSpecTable> {
39300 static constexpr size_t position{36};
39301 static constexpr char const * const name{"MethodSpecTable"};
39302 static constexpr char const * const typestr{"SgAsmCilMethodSpecTable*"};
39303 static constexpr bool traverse{true};
39304 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_MethodSpecTable};
39305 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39306 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilMethodSpecTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_MethodSpecTable>;
39307};
39308template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilModuleTable*,&SgAsmCilMetadataHeap::p_ModuleTable> {
39311 static constexpr size_t position{37};
39312 static constexpr char const * const name{"ModuleTable"};
39313 static constexpr char const * const typestr{"SgAsmCilModuleTable*"};
39314 static constexpr bool traverse{true};
39315 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ModuleTable};
39316 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39317 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilModuleTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ModuleTable>;
39318};
39319template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilModuleRefTable*,&SgAsmCilMetadataHeap::p_ModuleRefTable> {
39322 static constexpr size_t position{38};
39323 static constexpr char const * const name{"ModuleRefTable"};
39324 static constexpr char const * const typestr{"SgAsmCilModuleRefTable*"};
39325 static constexpr bool traverse{true};
39326 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ModuleRefTable};
39327 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39328 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilModuleRefTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ModuleRefTable>;
39329};
39330template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilNestedClassTable*,&SgAsmCilMetadataHeap::p_NestedClassTable> {
39333 static constexpr size_t position{39};
39334 static constexpr char const * const name{"NestedClassTable"};
39335 static constexpr char const * const typestr{"SgAsmCilNestedClassTable*"};
39336 static constexpr bool traverse{true};
39337 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_NestedClassTable};
39338 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39339 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilNestedClassTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_NestedClassTable>;
39340};
39341template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilParamTable*,&SgAsmCilMetadataHeap::p_ParamTable> {
39344 static constexpr size_t position{40};
39345 static constexpr char const * const name{"ParamTable"};
39346 static constexpr char const * const typestr{"SgAsmCilParamTable*"};
39347 static constexpr bool traverse{true};
39348 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_ParamTable};
39349 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39350 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilParamTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_ParamTable>;
39351};
39352template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilPropertyTable*,&SgAsmCilMetadataHeap::p_PropertyTable> {
39355 static constexpr size_t position{41};
39356 static constexpr char const * const name{"PropertyTable"};
39357 static constexpr char const * const typestr{"SgAsmCilPropertyTable*"};
39358 static constexpr bool traverse{true};
39359 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_PropertyTable};
39360 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39361 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilPropertyTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_PropertyTable>;
39362};
39363template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilPropertyMapTable*,&SgAsmCilMetadataHeap::p_PropertyMapTable> {
39366 static constexpr size_t position{42};
39367 static constexpr char const * const name{"PropertyMapTable"};
39368 static constexpr char const * const typestr{"SgAsmCilPropertyMapTable*"};
39369 static constexpr bool traverse{true};
39370 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_PropertyMapTable};
39371 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39372 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilPropertyMapTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_PropertyMapTable>;
39373};
39374template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilStandAloneSigTable*,&SgAsmCilMetadataHeap::p_StandAloneSigTable> {
39377 static constexpr size_t position{43};
39378 static constexpr char const * const name{"StandAloneSigTable"};
39379 static constexpr char const * const typestr{"SgAsmCilStandAloneSigTable*"};
39380 static constexpr bool traverse{true};
39381 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_StandAloneSigTable};
39382 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39383 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilStandAloneSigTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_StandAloneSigTable>;
39384};
39385template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilTypeDefTable*,&SgAsmCilMetadataHeap::p_TypeDefTable> {
39388 static constexpr size_t position{44};
39389 static constexpr char const * const name{"TypeDefTable"};
39390 static constexpr char const * const typestr{"SgAsmCilTypeDefTable*"};
39391 static constexpr bool traverse{true};
39392 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_TypeDefTable};
39393 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39394 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilTypeDefTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_TypeDefTable>;
39395};
39396template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilTypeRefTable*,&SgAsmCilMetadataHeap::p_TypeRefTable> {
39399 static constexpr size_t position{45};
39400 static constexpr char const * const name{"TypeRefTable"};
39401 static constexpr char const * const typestr{"SgAsmCilTypeRefTable*"};
39402 static constexpr bool traverse{true};
39403 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_TypeRefTable};
39404 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39405 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilTypeRefTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_TypeRefTable>;
39406};
39407template <> struct describe_field_t<SgAsmCilMetadataHeap,SgAsmCilTypeSpecTable*,&SgAsmCilMetadataHeap::p_TypeSpecTable> {
39410 static constexpr size_t position{46};
39411 static constexpr char const * const name{"TypeSpecTable"};
39412 static constexpr char const * const typestr{"SgAsmCilTypeSpecTable*"};
39413 static constexpr bool traverse{true};
39414 static constexpr auto mbr_ptr{&SgAsmCilMetadataHeap::p_TypeSpecTable};
39415 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39416 using bind = Desc<SgAsmCilMetadataHeap, SgAsmCilTypeSpecTable* SgAsmCilMetadataHeap::*, &SgAsmCilMetadataHeap::p_TypeSpecTable>;
39417};
39419 using node = SgAsmCilMetadataHeap;
39420 using base = SgAsmCilDataStream;
39421 static constexpr char const * const name{"AsmCilMetadataHeap"};
39422 static constexpr unsigned long variant{994};
39423 static constexpr bool concrete{true};
39424 using subclasses_t = mp::List<>;
39425 using fields_t = mp::List<describe_field_t<SgAsmCilMetadataHeap,uint32_t,&SgAsmCilMetadataHeap::p_ReservedAlwaysZero>, describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_MajorVersion>, describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_MinorVersion>, describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_HeapSizes>, describe_field_t<SgAsmCilMetadataHeap,uint8_t,&SgAsmCilMetadataHeap::p_ReservedAlwaysOne>, describe_field_t<SgAsmCilMetadataHeap,uint64_t,&SgAsmCilMetadataHeap::p_Valid>, describe_field_t<SgAsmCilMetadataHeap,uint64_t,&SgAsmCilMetadataHeap::p_Sorted>, describe_field_t<SgAsmCilMetadataHeap,std::vector<uint32_t>,&SgAsmCilMetadataHeap::p_NumberOfRows>, describe_field_t<SgAsmCilMetadataHeap,uint64_t,&SgAsmCilMetadataHeap::p_DataSizeFlags>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyTable*,&SgAsmCilMetadataHeap::p_AssemblyTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyOSTable*,&SgAsmCilMetadataHeap::p_AssemblyOSTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyProcessorTable*,&SgAsmCilMetadataHeap::p_AssemblyProcessorTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyRefTable*,&SgAsmCilMetadataHeap::p_AssemblyRefTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyRefOSTable*,&SgAsmCilMetadataHeap::p_AssemblyRefOSTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilAssemblyRefProcessorTable*,&SgAsmCilMetadataHeap::p_AssemblyRefProcessorTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilClassLayoutTable*,&SgAsmCilMetadataHeap::p_ClassLayoutTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilConstantTable*,&SgAsmCilMetadataHeap::p_ConstantTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilCustomAttributeTable*,&SgAsmCilMetadataHeap::p_CustomAttributeTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilDeclSecurityTable*,&SgAsmCilMetadataHeap::p_DeclSecurityTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilEventTable*,&SgAsmCilMetadataHeap::p_EventTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilEventMapTable*,&SgAsmCilMetadataHeap::p_EventMapTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilExportedTypeTable*,&SgAsmCilMetadataHeap::p_ExportedTypeTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldTable*,&SgAsmCilMetadataHeap::p_FieldTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldLayoutTable*,&SgAsmCilMetadataHeap::p_FieldLayoutTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldMarshalTable*,&SgAsmCilMetadataHeap::p_FieldMarshalTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFieldRVATable*,&SgAsmCilMetadataHeap::p_FieldRVATable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilFileTable*,&SgAsmCilMetadataHeap::p_FileTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilGenericParamTable*,&SgAsmCilMetadataHeap::p_GenericParamTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilGenericParamConstraintTable*,&SgAsmCilMetadataHeap::p_GenericParamConstraintTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilImplMapTable*,&SgAsmCilMetadataHeap::p_ImplMapTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilInterfaceImplTable*,&SgAsmCilMetadataHeap::p_InterfaceImplTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilManifestResourceTable*,&SgAsmCilMetadataHeap::p_ManifestResourceTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMemberRefTable*,&SgAsmCilMetadataHeap::p_MemberRefTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodDefTable*,&SgAsmCilMetadataHeap::p_MethodDefTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodImplTable*,&SgAsmCilMetadataHeap::p_MethodImplTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodSemanticsTable*,&SgAsmCilMetadataHeap::p_MethodSemanticsTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilMethodSpecTable*,&SgAsmCilMetadataHeap::p_MethodSpecTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilModuleTable*,&SgAsmCilMetadataHeap::p_ModuleTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilModuleRefTable*,&SgAsmCilMetadataHeap::p_ModuleRefTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilNestedClassTable*,&SgAsmCilMetadataHeap::p_NestedClassTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilParamTable*,&SgAsmCilMetadataHeap::p_ParamTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilPropertyTable*,&SgAsmCilMetadataHeap::p_PropertyTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilPropertyMapTable*,&SgAsmCilMetadataHeap::p_PropertyMapTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilStandAloneSigTable*,&SgAsmCilMetadataHeap::p_StandAloneSigTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilTypeDefTable*,&SgAsmCilMetadataHeap::p_TypeDefTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilTypeRefTable*,&SgAsmCilMetadataHeap::p_TypeRefTable>, describe_field_t<SgAsmCilMetadataHeap,SgAsmCilTypeSpecTable*,&SgAsmCilMetadataHeap::p_TypeSpecTable>>;
39426};
39427template <> struct node_from_variant_t<994> { using type = SgAsmCilMetadataHeap; };
39428
39429// Class: AsmCilUint8Heap
39430template <> struct describe_field_t<SgAsmCilUint8Heap,std::vector<uint8_t>,&SgAsmCilUint8Heap::p_Stream> {
39431 using parent = SgAsmCilUint8Heap;
39432 using field_type = std::vector<uint8_t>;
39433 static constexpr size_t position{0};
39434 static constexpr char const * const name{"Stream"};
39435 static constexpr char const * const typestr{"std::vector<uint8_t>"};
39436 static constexpr bool traverse{false};
39437 static constexpr auto mbr_ptr{&SgAsmCilUint8Heap::p_Stream};
39438 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39439 using bind = Desc<SgAsmCilUint8Heap, std::vector<uint8_t> SgAsmCilUint8Heap::*, &SgAsmCilUint8Heap::p_Stream>;
39440};
39442 using node = SgAsmCilUint8Heap;
39443 using base = SgAsmCilDataStream;
39444 static constexpr char const * const name{"AsmCilUint8Heap"};
39445 static constexpr unsigned long variant{995};
39446 static constexpr bool concrete{true};
39447 using subclasses_t = mp::List<>;
39449};
39450template <> struct node_from_variant_t<995> { using type = SgAsmCilUint8Heap; };
39451
39452// Class: AsmCilUint32Heap
39453template <> struct describe_field_t<SgAsmCilUint32Heap,std::vector<uint32_t>,&SgAsmCilUint32Heap::p_Stream> {
39454 using parent = SgAsmCilUint32Heap;
39455 using field_type = std::vector<uint32_t>;
39456 static constexpr size_t position{0};
39457 static constexpr char const * const name{"Stream"};
39458 static constexpr char const * const typestr{"std::vector<uint32_t>"};
39459 static constexpr bool traverse{false};
39460 static constexpr auto mbr_ptr{&SgAsmCilUint32Heap::p_Stream};
39461 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39462 using bind = Desc<SgAsmCilUint32Heap, std::vector<uint32_t> SgAsmCilUint32Heap::*, &SgAsmCilUint32Heap::p_Stream>;
39463};
39465 using node = SgAsmCilUint32Heap;
39466 using base = SgAsmCilDataStream;
39467 static constexpr char const * const name{"AsmCilUint32Heap"};
39468 static constexpr unsigned long variant{996};
39469 static constexpr bool concrete{true};
39470 using subclasses_t = mp::List<>;
39472};
39473template <> struct node_from_variant_t<996> { using type = SgAsmCilUint32Heap; };
39474
39475// Class: AsmCliHeader
39476template <> struct describe_field_t<SgAsmCliHeader,uint32_t,&SgAsmCliHeader::p_cb> {
39477 using parent = SgAsmCliHeader;
39478 using field_type = uint32_t;
39479 static constexpr size_t position{0};
39480 static constexpr char const * const name{"cb"};
39481 static constexpr char const * const typestr{"uint32_t"};
39482 static constexpr bool traverse{false};
39483 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_cb};
39484 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39485 using bind = Desc<SgAsmCliHeader, uint32_t SgAsmCliHeader::*, &SgAsmCliHeader::p_cb>;
39486};
39487template <> struct describe_field_t<SgAsmCliHeader,uint16_t,&SgAsmCliHeader::p_majorRuntimeVersion> {
39488 using parent = SgAsmCliHeader;
39489 using field_type = uint16_t;
39490 static constexpr size_t position{1};
39491 static constexpr char const * const name{"majorRuntimeVersion"};
39492 static constexpr char const * const typestr{"uint16_t"};
39493 static constexpr bool traverse{false};
39494 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_majorRuntimeVersion};
39495 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39496 using bind = Desc<SgAsmCliHeader, uint16_t SgAsmCliHeader::*, &SgAsmCliHeader::p_majorRuntimeVersion>;
39497};
39498template <> struct describe_field_t<SgAsmCliHeader,uint16_t,&SgAsmCliHeader::p_minorRuntimeVersion> {
39499 using parent = SgAsmCliHeader;
39500 using field_type = uint16_t;
39501 static constexpr size_t position{2};
39502 static constexpr char const * const name{"minorRuntimeVersion"};
39503 static constexpr char const * const typestr{"uint16_t"};
39504 static constexpr bool traverse{false};
39505 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_minorRuntimeVersion};
39506 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39507 using bind = Desc<SgAsmCliHeader, uint16_t SgAsmCliHeader::*, &SgAsmCliHeader::p_minorRuntimeVersion>;
39508};
39509template <> struct describe_field_t<SgAsmCliHeader,uint64_t,&SgAsmCliHeader::p_metaData> {
39510 using parent = SgAsmCliHeader;
39511 using field_type = uint64_t;
39512 static constexpr size_t position{3};
39513 static constexpr char const * const name{"metaData"};
39514 static constexpr char const * const typestr{"uint64_t"};
39515 static constexpr bool traverse{false};
39516 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_metaData};
39517 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39518 using bind = Desc<SgAsmCliHeader, uint64_t SgAsmCliHeader::*, &SgAsmCliHeader::p_metaData>;
39519};
39520template <> struct describe_field_t<SgAsmCliHeader,uint32_t,&SgAsmCliHeader::p_flags> {
39521 using parent = SgAsmCliHeader;
39522 using field_type = uint32_t;
39523 static constexpr size_t position{4};
39524 static constexpr char const * const name{"flags"};
39525 static constexpr char const * const typestr{"uint32_t"};
39526 static constexpr bool traverse{false};
39527 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_flags};
39528 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39529 using bind = Desc<SgAsmCliHeader, uint32_t SgAsmCliHeader::*, &SgAsmCliHeader::p_flags>;
39530};
39531template <> struct describe_field_t<SgAsmCliHeader,uint32_t,&SgAsmCliHeader::p_entryPointToken> {
39532 using parent = SgAsmCliHeader;
39533 using field_type = uint32_t;
39534 static constexpr size_t position{5};
39535 static constexpr char const * const name{"entryPointToken"};
39536 static constexpr char const * const typestr{"uint32_t"};
39537 static constexpr bool traverse{false};
39538 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_entryPointToken};
39539 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39540 using bind = Desc<SgAsmCliHeader, uint32_t SgAsmCliHeader::*, &SgAsmCliHeader::p_entryPointToken>;
39541};
39542template <> struct describe_field_t<SgAsmCliHeader,uint64_t,&SgAsmCliHeader::p_resources> {
39543 using parent = SgAsmCliHeader;
39544 using field_type = uint64_t;
39545 static constexpr size_t position{6};
39546 static constexpr char const * const name{"resources"};
39547 static constexpr char const * const typestr{"uint64_t"};
39548 static constexpr bool traverse{false};
39549 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_resources};
39550 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39551 using bind = Desc<SgAsmCliHeader, uint64_t SgAsmCliHeader::*, &SgAsmCliHeader::p_resources>;
39552};
39553template <> struct describe_field_t<SgAsmCliHeader,uint64_t,&SgAsmCliHeader::p_strongNameSignature> {
39554 using parent = SgAsmCliHeader;
39555 using field_type = uint64_t;
39556 static constexpr size_t position{7};
39557 static constexpr char const * const name{"strongNameSignature"};
39558 static constexpr char const * const typestr{"uint64_t"};
39559 static constexpr bool traverse{false};
39560 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_strongNameSignature};
39561 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39562 using bind = Desc<SgAsmCliHeader, uint64_t SgAsmCliHeader::*, &SgAsmCliHeader::p_strongNameSignature>;
39563};
39564template <> struct describe_field_t<SgAsmCliHeader,uint64_t,&SgAsmCliHeader::p_codeManagerTable> {
39565 using parent = SgAsmCliHeader;
39566 using field_type = uint64_t;
39567 static constexpr size_t position{8};
39568 static constexpr char const * const name{"codeManagerTable"};
39569 static constexpr char const * const typestr{"uint64_t"};
39570 static constexpr bool traverse{false};
39571 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_codeManagerTable};
39572 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39573 using bind = Desc<SgAsmCliHeader, uint64_t SgAsmCliHeader::*, &SgAsmCliHeader::p_codeManagerTable>;
39574};
39575template <> struct describe_field_t<SgAsmCliHeader,uint64_t,&SgAsmCliHeader::p_vTableFixups> {
39576 using parent = SgAsmCliHeader;
39577 using field_type = uint64_t;
39578 static constexpr size_t position{9};
39579 static constexpr char const * const name{"vTableFixups"};
39580 static constexpr char const * const typestr{"uint64_t"};
39581 static constexpr bool traverse{false};
39582 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_vTableFixups};
39583 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39584 using bind = Desc<SgAsmCliHeader, uint64_t SgAsmCliHeader::*, &SgAsmCliHeader::p_vTableFixups>;
39585};
39586template <> struct describe_field_t<SgAsmCliHeader,uint64_t,&SgAsmCliHeader::p_exportAddressTableJumps> {
39587 using parent = SgAsmCliHeader;
39588 using field_type = uint64_t;
39589 static constexpr size_t position{10};
39590 static constexpr char const * const name{"exportAddressTableJumps"};
39591 static constexpr char const * const typestr{"uint64_t"};
39592 static constexpr bool traverse{false};
39593 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_exportAddressTableJumps};
39594 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39595 using bind = Desc<SgAsmCliHeader, uint64_t SgAsmCliHeader::*, &SgAsmCliHeader::p_exportAddressTableJumps>;
39596};
39597template <> struct describe_field_t<SgAsmCliHeader,uint64_t,&SgAsmCliHeader::p_managedNativeHeader> {
39598 using parent = SgAsmCliHeader;
39599 using field_type = uint64_t;
39600 static constexpr size_t position{11};
39601 static constexpr char const * const name{"managedNativeHeader"};
39602 static constexpr char const * const typestr{"uint64_t"};
39603 static constexpr bool traverse{false};
39604 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_managedNativeHeader};
39605 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39606 using bind = Desc<SgAsmCliHeader, uint64_t SgAsmCliHeader::*, &SgAsmCliHeader::p_managedNativeHeader>;
39607};
39608template <> struct describe_field_t<SgAsmCliHeader,SgAsmCilMetadataRoot*,&SgAsmCliHeader::p_metadataRoot> {
39609 using parent = SgAsmCliHeader;
39611 static constexpr size_t position{12};
39612 static constexpr char const * const name{"metadataRoot"};
39613 static constexpr char const * const typestr{"SgAsmCilMetadataRoot*"};
39614 static constexpr bool traverse{true};
39615 static constexpr auto mbr_ptr{&SgAsmCliHeader::p_metadataRoot};
39616 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39617 using bind = Desc<SgAsmCliHeader, SgAsmCilMetadataRoot* SgAsmCliHeader::*, &SgAsmCliHeader::p_metadataRoot>;
39618};
39628template <> struct node_from_variant_t<997> { using type = SgAsmCliHeader; };
39629
39630// Class: AdaVariantDecl
39631template <> struct describe_field_t<SgAdaVariantDecl,SgExpression*,&SgAdaVariantDecl::p_discriminant> {
39632 using parent = SgAdaVariantDecl;
39633 using field_type = SgExpression*;
39634 static constexpr size_t position{0};
39635 static constexpr char const * const name{"discriminant"};
39636 static constexpr char const * const typestr{"SgExpression*"};
39637 static constexpr bool traverse{true};
39638 static constexpr auto mbr_ptr{&SgAdaVariantDecl::p_discriminant};
39639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39640 using bind = Desc<SgAdaVariantDecl, SgExpression* SgAdaVariantDecl::*, &SgAdaVariantDecl::p_discriminant>;
39641};
39642template <> struct describe_field_t<SgAdaVariantDecl,SgAdaUnscopedBlock*,&SgAdaVariantDecl::p_variants> {
39643 using parent = SgAdaVariantDecl;
39645 static constexpr size_t position{1};
39646 static constexpr char const * const name{"variants"};
39647 static constexpr char const * const typestr{"SgAdaUnscopedBlock*"};
39648 static constexpr bool traverse{true};
39649 static constexpr auto mbr_ptr{&SgAdaVariantDecl::p_variants};
39650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39651 using bind = Desc<SgAdaVariantDecl, SgAdaUnscopedBlock* SgAdaVariantDecl::*, &SgAdaVariantDecl::p_variants>;
39652};
39654 using node = SgAdaVariantDecl;
39656 static constexpr char const * const name{"AdaVariantDecl"};
39657 static constexpr unsigned long variant{998};
39658 static constexpr bool concrete{true};
39659 using subclasses_t = mp::List<>;
39661};
39662template <> struct node_from_variant_t<998> { using type = SgAdaVariantDecl; };
39663
39664// Class: AdaVariantWhenStmt
39665template <> struct describe_field_t<SgAdaVariantWhenStmt,SgExprListExp*,&SgAdaVariantWhenStmt::p_choices> {
39667 using field_type = SgExprListExp*;
39668 static constexpr size_t position{0};
39669 static constexpr char const * const name{"choices"};
39670 static constexpr char const * const typestr{"SgExprListExp*"};
39671 static constexpr bool traverse{true};
39672 static constexpr auto mbr_ptr{&SgAdaVariantWhenStmt::p_choices};
39673 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39674 using bind = Desc<SgAdaVariantWhenStmt, SgExprListExp* SgAdaVariantWhenStmt::*, &SgAdaVariantWhenStmt::p_choices>;
39675};
39676template <> struct describe_field_t<SgAdaVariantWhenStmt,SgAdaUnscopedBlock*,&SgAdaVariantWhenStmt::p_components> {
39679 static constexpr size_t position{1};
39680 static constexpr char const * const name{"components"};
39681 static constexpr char const * const typestr{"SgAdaUnscopedBlock*"};
39682 static constexpr bool traverse{true};
39683 static constexpr auto mbr_ptr{&SgAdaVariantWhenStmt::p_components};
39684 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39685 using bind = Desc<SgAdaVariantWhenStmt, SgAdaUnscopedBlock* SgAdaVariantWhenStmt::*, &SgAdaVariantWhenStmt::p_components>;
39686};
39688 using node = SgAdaVariantWhenStmt;
39689 using base = SgStatement;
39690 static constexpr char const * const name{"AdaVariantWhenStmt"};
39691 static constexpr unsigned long variant{999};
39692 static constexpr bool concrete{true};
39693 using subclasses_t = mp::List<>;
39695};
39696template <> struct node_from_variant_t<999> { using type = SgAdaVariantWhenStmt; };
39697
39698// Class: AsmCilAssemblyTable
39699template <> struct describe_field_t<SgAsmCilAssemblyTable,std::vector<SgAsmCilAssembly*>,&SgAsmCilAssemblyTable::p_elements> {
39701 using field_type = std::vector<SgAsmCilAssembly*>;
39702 static constexpr size_t position{0};
39703 static constexpr char const * const name{"elements"};
39704 static constexpr char const * const typestr{"std::vector<SgAsmCilAssembly*>"};
39705 static constexpr bool traverse{true};
39706 static constexpr auto mbr_ptr{&SgAsmCilAssemblyTable::p_elements};
39707 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39708 using bind = Desc<SgAsmCilAssemblyTable, std::vector<SgAsmCilAssembly*> SgAsmCilAssemblyTable::*, &SgAsmCilAssemblyTable::p_elements>;
39709};
39712 using base = SgAsmCilMetadata;
39713 static constexpr char const * const name{"AsmCilAssemblyTable"};
39714 static constexpr unsigned long variant{1000};
39715 static constexpr bool concrete{true};
39716 using subclasses_t = mp::List<>;
39718};
39719template <> struct node_from_variant_t<1000> { using type = SgAsmCilAssemblyTable; };
39720
39721// Class: AsmCilAssemblyOSTable
39722template <> struct describe_field_t<SgAsmCilAssemblyOSTable,std::vector<SgAsmCilAssemblyOS*>,&SgAsmCilAssemblyOSTable::p_elements> {
39724 using field_type = std::vector<SgAsmCilAssemblyOS*>;
39725 static constexpr size_t position{0};
39726 static constexpr char const * const name{"elements"};
39727 static constexpr char const * const typestr{"std::vector<SgAsmCilAssemblyOS*>"};
39728 static constexpr bool traverse{true};
39729 static constexpr auto mbr_ptr{&SgAsmCilAssemblyOSTable::p_elements};
39730 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39731 using bind = Desc<SgAsmCilAssemblyOSTable, std::vector<SgAsmCilAssemblyOS*> SgAsmCilAssemblyOSTable::*, &SgAsmCilAssemblyOSTable::p_elements>;
39732};
39735 using base = SgAsmCilMetadata;
39736 static constexpr char const * const name{"AsmCilAssemblyOSTable"};
39737 static constexpr unsigned long variant{1001};
39738 static constexpr bool concrete{true};
39739 using subclasses_t = mp::List<>;
39741};
39742template <> struct node_from_variant_t<1001> { using type = SgAsmCilAssemblyOSTable; };
39743
39744// Class: AsmCilAssemblyProcessorTable
39745template <> struct describe_field_t<SgAsmCilAssemblyProcessorTable,std::vector<SgAsmCilAssemblyProcessor*>,&SgAsmCilAssemblyProcessorTable::p_elements> {
39747 using field_type = std::vector<SgAsmCilAssemblyProcessor*>;
39748 static constexpr size_t position{0};
39749 static constexpr char const * const name{"elements"};
39750 static constexpr char const * const typestr{"std::vector<SgAsmCilAssemblyProcessor*>"};
39751 static constexpr bool traverse{true};
39752 static constexpr auto mbr_ptr{&SgAsmCilAssemblyProcessorTable::p_elements};
39753 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39754 using bind = Desc<SgAsmCilAssemblyProcessorTable, std::vector<SgAsmCilAssemblyProcessor*> SgAsmCilAssemblyProcessorTable::*, &SgAsmCilAssemblyProcessorTable::p_elements>;
39755};
39758 using base = SgAsmCilMetadata;
39759 static constexpr char const * const name{"AsmCilAssemblyProcessorTable"};
39760 static constexpr unsigned long variant{1002};
39761 static constexpr bool concrete{true};
39762 using subclasses_t = mp::List<>;
39764};
39765template <> struct node_from_variant_t<1002> { using type = SgAsmCilAssemblyProcessorTable; };
39766
39767// Class: AsmCilAssemblyRefTable
39768template <> struct describe_field_t<SgAsmCilAssemblyRefTable,std::vector<SgAsmCilAssemblyRef*>,&SgAsmCilAssemblyRefTable::p_elements> {
39770 using field_type = std::vector<SgAsmCilAssemblyRef*>;
39771 static constexpr size_t position{0};
39772 static constexpr char const * const name{"elements"};
39773 static constexpr char const * const typestr{"std::vector<SgAsmCilAssemblyRef*>"};
39774 static constexpr bool traverse{true};
39775 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefTable::p_elements};
39776 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39777 using bind = Desc<SgAsmCilAssemblyRefTable, std::vector<SgAsmCilAssemblyRef*> SgAsmCilAssemblyRefTable::*, &SgAsmCilAssemblyRefTable::p_elements>;
39778};
39781 using base = SgAsmCilMetadata;
39782 static constexpr char const * const name{"AsmCilAssemblyRefTable"};
39783 static constexpr unsigned long variant{1003};
39784 static constexpr bool concrete{true};
39785 using subclasses_t = mp::List<>;
39787};
39788template <> struct node_from_variant_t<1003> { using type = SgAsmCilAssemblyRefTable; };
39789
39790// Class: AsmCilAssemblyRefOSTable
39791template <> struct describe_field_t<SgAsmCilAssemblyRefOSTable,std::vector<SgAsmCilAssemblyRefOS*>,&SgAsmCilAssemblyRefOSTable::p_elements> {
39793 using field_type = std::vector<SgAsmCilAssemblyRefOS*>;
39794 static constexpr size_t position{0};
39795 static constexpr char const * const name{"elements"};
39796 static constexpr char const * const typestr{"std::vector<SgAsmCilAssemblyRefOS*>"};
39797 static constexpr bool traverse{true};
39798 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefOSTable::p_elements};
39799 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39800 using bind = Desc<SgAsmCilAssemblyRefOSTable, std::vector<SgAsmCilAssemblyRefOS*> SgAsmCilAssemblyRefOSTable::*, &SgAsmCilAssemblyRefOSTable::p_elements>;
39801};
39804 using base = SgAsmCilMetadata;
39805 static constexpr char const * const name{"AsmCilAssemblyRefOSTable"};
39806 static constexpr unsigned long variant{1004};
39807 static constexpr bool concrete{true};
39808 using subclasses_t = mp::List<>;
39810};
39811template <> struct node_from_variant_t<1004> { using type = SgAsmCilAssemblyRefOSTable; };
39812
39813// Class: AsmCilAssemblyRefProcessorTable
39814template <> struct describe_field_t<SgAsmCilAssemblyRefProcessorTable,std::vector<SgAsmCilAssemblyRefProcessor*>,&SgAsmCilAssemblyRefProcessorTable::p_elements> {
39816 using field_type = std::vector<SgAsmCilAssemblyRefProcessor*>;
39817 static constexpr size_t position{0};
39818 static constexpr char const * const name{"elements"};
39819 static constexpr char const * const typestr{"std::vector<SgAsmCilAssemblyRefProcessor*>"};
39820 static constexpr bool traverse{true};
39821 static constexpr auto mbr_ptr{&SgAsmCilAssemblyRefProcessorTable::p_elements};
39822 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39823 using bind = Desc<SgAsmCilAssemblyRefProcessorTable, std::vector<SgAsmCilAssemblyRefProcessor*> SgAsmCilAssemblyRefProcessorTable::*, &SgAsmCilAssemblyRefProcessorTable::p_elements>;
39824};
39827 using base = SgAsmCilMetadata;
39828 static constexpr char const * const name{"AsmCilAssemblyRefProcessorTable"};
39829 static constexpr unsigned long variant{1005};
39830 static constexpr bool concrete{true};
39831 using subclasses_t = mp::List<>;
39833};
39834template <> struct node_from_variant_t<1005> { using type = SgAsmCilAssemblyRefProcessorTable; };
39835
39836// Class: AsmCilClassLayoutTable
39837template <> struct describe_field_t<SgAsmCilClassLayoutTable,std::vector<SgAsmCilClassLayout*>,&SgAsmCilClassLayoutTable::p_elements> {
39839 using field_type = std::vector<SgAsmCilClassLayout*>;
39840 static constexpr size_t position{0};
39841 static constexpr char const * const name{"elements"};
39842 static constexpr char const * const typestr{"std::vector<SgAsmCilClassLayout*>"};
39843 static constexpr bool traverse{true};
39844 static constexpr auto mbr_ptr{&SgAsmCilClassLayoutTable::p_elements};
39845 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39846 using bind = Desc<SgAsmCilClassLayoutTable, std::vector<SgAsmCilClassLayout*> SgAsmCilClassLayoutTable::*, &SgAsmCilClassLayoutTable::p_elements>;
39847};
39850 using base = SgAsmCilMetadata;
39851 static constexpr char const * const name{"AsmCilClassLayoutTable"};
39852 static constexpr unsigned long variant{1006};
39853 static constexpr bool concrete{true};
39854 using subclasses_t = mp::List<>;
39856};
39857template <> struct node_from_variant_t<1006> { using type = SgAsmCilClassLayoutTable; };
39858
39859// Class: AsmCilConstantTable
39860template <> struct describe_field_t<SgAsmCilConstantTable,std::vector<SgAsmCilConstant*>,&SgAsmCilConstantTable::p_elements> {
39862 using field_type = std::vector<SgAsmCilConstant*>;
39863 static constexpr size_t position{0};
39864 static constexpr char const * const name{"elements"};
39865 static constexpr char const * const typestr{"std::vector<SgAsmCilConstant*>"};
39866 static constexpr bool traverse{true};
39867 static constexpr auto mbr_ptr{&SgAsmCilConstantTable::p_elements};
39868 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39869 using bind = Desc<SgAsmCilConstantTable, std::vector<SgAsmCilConstant*> SgAsmCilConstantTable::*, &SgAsmCilConstantTable::p_elements>;
39870};
39873 using base = SgAsmCilMetadata;
39874 static constexpr char const * const name{"AsmCilConstantTable"};
39875 static constexpr unsigned long variant{1007};
39876 static constexpr bool concrete{true};
39877 using subclasses_t = mp::List<>;
39879};
39880template <> struct node_from_variant_t<1007> { using type = SgAsmCilConstantTable; };
39881
39882// Class: AsmCilCustomAttributeTable
39883template <> struct describe_field_t<SgAsmCilCustomAttributeTable,std::vector<SgAsmCilCustomAttribute*>,&SgAsmCilCustomAttributeTable::p_elements> {
39885 using field_type = std::vector<SgAsmCilCustomAttribute*>;
39886 static constexpr size_t position{0};
39887 static constexpr char const * const name{"elements"};
39888 static constexpr char const * const typestr{"std::vector<SgAsmCilCustomAttribute*>"};
39889 static constexpr bool traverse{true};
39890 static constexpr auto mbr_ptr{&SgAsmCilCustomAttributeTable::p_elements};
39891 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39892 using bind = Desc<SgAsmCilCustomAttributeTable, std::vector<SgAsmCilCustomAttribute*> SgAsmCilCustomAttributeTable::*, &SgAsmCilCustomAttributeTable::p_elements>;
39893};
39896 using base = SgAsmCilMetadata;
39897 static constexpr char const * const name{"AsmCilCustomAttributeTable"};
39898 static constexpr unsigned long variant{1008};
39899 static constexpr bool concrete{true};
39900 using subclasses_t = mp::List<>;
39902};
39903template <> struct node_from_variant_t<1008> { using type = SgAsmCilCustomAttributeTable; };
39904
39905// Class: AsmCilDeclSecurityTable
39906template <> struct describe_field_t<SgAsmCilDeclSecurityTable,std::vector<SgAsmCilDeclSecurity*>,&SgAsmCilDeclSecurityTable::p_elements> {
39908 using field_type = std::vector<SgAsmCilDeclSecurity*>;
39909 static constexpr size_t position{0};
39910 static constexpr char const * const name{"elements"};
39911 static constexpr char const * const typestr{"std::vector<SgAsmCilDeclSecurity*>"};
39912 static constexpr bool traverse{true};
39913 static constexpr auto mbr_ptr{&SgAsmCilDeclSecurityTable::p_elements};
39914 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39915 using bind = Desc<SgAsmCilDeclSecurityTable, std::vector<SgAsmCilDeclSecurity*> SgAsmCilDeclSecurityTable::*, &SgAsmCilDeclSecurityTable::p_elements>;
39916};
39919 using base = SgAsmCilMetadata;
39920 static constexpr char const * const name{"AsmCilDeclSecurityTable"};
39921 static constexpr unsigned long variant{1009};
39922 static constexpr bool concrete{true};
39923 using subclasses_t = mp::List<>;
39925};
39926template <> struct node_from_variant_t<1009> { using type = SgAsmCilDeclSecurityTable; };
39927
39928// Class: AsmCilEventTable
39929template <> struct describe_field_t<SgAsmCilEventTable,std::vector<SgAsmCilEvent*>,&SgAsmCilEventTable::p_elements> {
39930 using parent = SgAsmCilEventTable;
39931 using field_type = std::vector<SgAsmCilEvent*>;
39932 static constexpr size_t position{0};
39933 static constexpr char const * const name{"elements"};
39934 static constexpr char const * const typestr{"std::vector<SgAsmCilEvent*>"};
39935 static constexpr bool traverse{true};
39936 static constexpr auto mbr_ptr{&SgAsmCilEventTable::p_elements};
39937 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39938 using bind = Desc<SgAsmCilEventTable, std::vector<SgAsmCilEvent*> SgAsmCilEventTable::*, &SgAsmCilEventTable::p_elements>;
39939};
39941 using node = SgAsmCilEventTable;
39942 using base = SgAsmCilMetadata;
39943 static constexpr char const * const name{"AsmCilEventTable"};
39944 static constexpr unsigned long variant{1010};
39945 static constexpr bool concrete{true};
39946 using subclasses_t = mp::List<>;
39948};
39949template <> struct node_from_variant_t<1010> { using type = SgAsmCilEventTable; };
39950
39951// Class: AsmCilEventMapTable
39952template <> struct describe_field_t<SgAsmCilEventMapTable,std::vector<SgAsmCilEventMap*>,&SgAsmCilEventMapTable::p_elements> {
39954 using field_type = std::vector<SgAsmCilEventMap*>;
39955 static constexpr size_t position{0};
39956 static constexpr char const * const name{"elements"};
39957 static constexpr char const * const typestr{"std::vector<SgAsmCilEventMap*>"};
39958 static constexpr bool traverse{true};
39959 static constexpr auto mbr_ptr{&SgAsmCilEventMapTable::p_elements};
39960 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39961 using bind = Desc<SgAsmCilEventMapTable, std::vector<SgAsmCilEventMap*> SgAsmCilEventMapTable::*, &SgAsmCilEventMapTable::p_elements>;
39962};
39965 using base = SgAsmCilMetadata;
39966 static constexpr char const * const name{"AsmCilEventMapTable"};
39967 static constexpr unsigned long variant{1011};
39968 static constexpr bool concrete{true};
39969 using subclasses_t = mp::List<>;
39971};
39972template <> struct node_from_variant_t<1011> { using type = SgAsmCilEventMapTable; };
39973
39974// Class: AsmCilExportedTypeTable
39975template <> struct describe_field_t<SgAsmCilExportedTypeTable,std::vector<SgAsmCilExportedType*>,&SgAsmCilExportedTypeTable::p_elements> {
39977 using field_type = std::vector<SgAsmCilExportedType*>;
39978 static constexpr size_t position{0};
39979 static constexpr char const * const name{"elements"};
39980 static constexpr char const * const typestr{"std::vector<SgAsmCilExportedType*>"};
39981 static constexpr bool traverse{true};
39982 static constexpr auto mbr_ptr{&SgAsmCilExportedTypeTable::p_elements};
39983 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
39984 using bind = Desc<SgAsmCilExportedTypeTable, std::vector<SgAsmCilExportedType*> SgAsmCilExportedTypeTable::*, &SgAsmCilExportedTypeTable::p_elements>;
39985};
39988 using base = SgAsmCilMetadata;
39989 static constexpr char const * const name{"AsmCilExportedTypeTable"};
39990 static constexpr unsigned long variant{1012};
39991 static constexpr bool concrete{true};
39992 using subclasses_t = mp::List<>;
39994};
39995template <> struct node_from_variant_t<1012> { using type = SgAsmCilExportedTypeTable; };
39996
39997// Class: AsmCilFieldTable
39998template <> struct describe_field_t<SgAsmCilFieldTable,std::vector<SgAsmCilField*>,&SgAsmCilFieldTable::p_elements> {
39999 using parent = SgAsmCilFieldTable;
40000 using field_type = std::vector<SgAsmCilField*>;
40001 static constexpr size_t position{0};
40002 static constexpr char const * const name{"elements"};
40003 static constexpr char const * const typestr{"std::vector<SgAsmCilField*>"};
40004 static constexpr bool traverse{true};
40005 static constexpr auto mbr_ptr{&SgAsmCilFieldTable::p_elements};
40006 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40007 using bind = Desc<SgAsmCilFieldTable, std::vector<SgAsmCilField*> SgAsmCilFieldTable::*, &SgAsmCilFieldTable::p_elements>;
40008};
40010 using node = SgAsmCilFieldTable;
40011 using base = SgAsmCilMetadata;
40012 static constexpr char const * const name{"AsmCilFieldTable"};
40013 static constexpr unsigned long variant{1013};
40014 static constexpr bool concrete{true};
40015 using subclasses_t = mp::List<>;
40017};
40018template <> struct node_from_variant_t<1013> { using type = SgAsmCilFieldTable; };
40019
40020// Class: AsmCilFieldLayoutTable
40021template <> struct describe_field_t<SgAsmCilFieldLayoutTable,std::vector<SgAsmCilFieldLayout*>,&SgAsmCilFieldLayoutTable::p_elements> {
40023 using field_type = std::vector<SgAsmCilFieldLayout*>;
40024 static constexpr size_t position{0};
40025 static constexpr char const * const name{"elements"};
40026 static constexpr char const * const typestr{"std::vector<SgAsmCilFieldLayout*>"};
40027 static constexpr bool traverse{true};
40028 static constexpr auto mbr_ptr{&SgAsmCilFieldLayoutTable::p_elements};
40029 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40030 using bind = Desc<SgAsmCilFieldLayoutTable, std::vector<SgAsmCilFieldLayout*> SgAsmCilFieldLayoutTable::*, &SgAsmCilFieldLayoutTable::p_elements>;
40031};
40034 using base = SgAsmCilMetadata;
40035 static constexpr char const * const name{"AsmCilFieldLayoutTable"};
40036 static constexpr unsigned long variant{1014};
40037 static constexpr bool concrete{true};
40038 using subclasses_t = mp::List<>;
40040};
40041template <> struct node_from_variant_t<1014> { using type = SgAsmCilFieldLayoutTable; };
40042
40043// Class: AsmCilFieldMarshalTable
40044template <> struct describe_field_t<SgAsmCilFieldMarshalTable,std::vector<SgAsmCilFieldMarshal*>,&SgAsmCilFieldMarshalTable::p_elements> {
40046 using field_type = std::vector<SgAsmCilFieldMarshal*>;
40047 static constexpr size_t position{0};
40048 static constexpr char const * const name{"elements"};
40049 static constexpr char const * const typestr{"std::vector<SgAsmCilFieldMarshal*>"};
40050 static constexpr bool traverse{true};
40051 static constexpr auto mbr_ptr{&SgAsmCilFieldMarshalTable::p_elements};
40052 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40053 using bind = Desc<SgAsmCilFieldMarshalTable, std::vector<SgAsmCilFieldMarshal*> SgAsmCilFieldMarshalTable::*, &SgAsmCilFieldMarshalTable::p_elements>;
40054};
40057 using base = SgAsmCilMetadata;
40058 static constexpr char const * const name{"AsmCilFieldMarshalTable"};
40059 static constexpr unsigned long variant{1015};
40060 static constexpr bool concrete{true};
40061 using subclasses_t = mp::List<>;
40063};
40064template <> struct node_from_variant_t<1015> { using type = SgAsmCilFieldMarshalTable; };
40065
40066// Class: AsmCilFieldRVATable
40067template <> struct describe_field_t<SgAsmCilFieldRVATable,std::vector<SgAsmCilFieldRVA*>,&SgAsmCilFieldRVATable::p_elements> {
40069 using field_type = std::vector<SgAsmCilFieldRVA*>;
40070 static constexpr size_t position{0};
40071 static constexpr char const * const name{"elements"};
40072 static constexpr char const * const typestr{"std::vector<SgAsmCilFieldRVA*>"};
40073 static constexpr bool traverse{true};
40074 static constexpr auto mbr_ptr{&SgAsmCilFieldRVATable::p_elements};
40075 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40076 using bind = Desc<SgAsmCilFieldRVATable, std::vector<SgAsmCilFieldRVA*> SgAsmCilFieldRVATable::*, &SgAsmCilFieldRVATable::p_elements>;
40077};
40080 using base = SgAsmCilMetadata;
40081 static constexpr char const * const name{"AsmCilFieldRVATable"};
40082 static constexpr unsigned long variant{1016};
40083 static constexpr bool concrete{true};
40084 using subclasses_t = mp::List<>;
40086};
40087template <> struct node_from_variant_t<1016> { using type = SgAsmCilFieldRVATable; };
40088
40089// Class: AsmCilFileTable
40090template <> struct describe_field_t<SgAsmCilFileTable,std::vector<SgAsmCilFile*>,&SgAsmCilFileTable::p_elements> {
40091 using parent = SgAsmCilFileTable;
40092 using field_type = std::vector<SgAsmCilFile*>;
40093 static constexpr size_t position{0};
40094 static constexpr char const * const name{"elements"};
40095 static constexpr char const * const typestr{"std::vector<SgAsmCilFile*>"};
40096 static constexpr bool traverse{true};
40097 static constexpr auto mbr_ptr{&SgAsmCilFileTable::p_elements};
40098 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40099 using bind = Desc<SgAsmCilFileTable, std::vector<SgAsmCilFile*> SgAsmCilFileTable::*, &SgAsmCilFileTable::p_elements>;
40100};
40102 using node = SgAsmCilFileTable;
40103 using base = SgAsmCilMetadata;
40104 static constexpr char const * const name{"AsmCilFileTable"};
40105 static constexpr unsigned long variant{1017};
40106 static constexpr bool concrete{true};
40107 using subclasses_t = mp::List<>;
40109};
40110template <> struct node_from_variant_t<1017> { using type = SgAsmCilFileTable; };
40111
40112// Class: AsmCilGenericParamTable
40113template <> struct describe_field_t<SgAsmCilGenericParamTable,std::vector<SgAsmCilGenericParam*>,&SgAsmCilGenericParamTable::p_elements> {
40115 using field_type = std::vector<SgAsmCilGenericParam*>;
40116 static constexpr size_t position{0};
40117 static constexpr char const * const name{"elements"};
40118 static constexpr char const * const typestr{"std::vector<SgAsmCilGenericParam*>"};
40119 static constexpr bool traverse{true};
40120 static constexpr auto mbr_ptr{&SgAsmCilGenericParamTable::p_elements};
40121 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40122 using bind = Desc<SgAsmCilGenericParamTable, std::vector<SgAsmCilGenericParam*> SgAsmCilGenericParamTable::*, &SgAsmCilGenericParamTable::p_elements>;
40123};
40126 using base = SgAsmCilMetadata;
40127 static constexpr char const * const name{"AsmCilGenericParamTable"};
40128 static constexpr unsigned long variant{1018};
40129 static constexpr bool concrete{true};
40130 using subclasses_t = mp::List<>;
40132};
40133template <> struct node_from_variant_t<1018> { using type = SgAsmCilGenericParamTable; };
40134
40135// Class: AsmCilGenericParamConstraintTable
40136template <> struct describe_field_t<SgAsmCilGenericParamConstraintTable,std::vector<SgAsmCilGenericParamConstraint*>,&SgAsmCilGenericParamConstraintTable::p_elements> {
40138 using field_type = std::vector<SgAsmCilGenericParamConstraint*>;
40139 static constexpr size_t position{0};
40140 static constexpr char const * const name{"elements"};
40141 static constexpr char const * const typestr{"std::vector<SgAsmCilGenericParamConstraint*>"};
40142 static constexpr bool traverse{true};
40143 static constexpr auto mbr_ptr{&SgAsmCilGenericParamConstraintTable::p_elements};
40144 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40145 using bind = Desc<SgAsmCilGenericParamConstraintTable, std::vector<SgAsmCilGenericParamConstraint*> SgAsmCilGenericParamConstraintTable::*, &SgAsmCilGenericParamConstraintTable::p_elements>;
40146};
40149 using base = SgAsmCilMetadata;
40150 static constexpr char const * const name{"AsmCilGenericParamConstraintTable"};
40151 static constexpr unsigned long variant{1019};
40152 static constexpr bool concrete{true};
40153 using subclasses_t = mp::List<>;
40155};
40156template <> struct node_from_variant_t<1019> { using type = SgAsmCilGenericParamConstraintTable; };
40157
40158// Class: AsmCilImplMapTable
40159template <> struct describe_field_t<SgAsmCilImplMapTable,std::vector<SgAsmCilImplMap*>,&SgAsmCilImplMapTable::p_elements> {
40161 using field_type = std::vector<SgAsmCilImplMap*>;
40162 static constexpr size_t position{0};
40163 static constexpr char const * const name{"elements"};
40164 static constexpr char const * const typestr{"std::vector<SgAsmCilImplMap*>"};
40165 static constexpr bool traverse{true};
40166 static constexpr auto mbr_ptr{&SgAsmCilImplMapTable::p_elements};
40167 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40168 using bind = Desc<SgAsmCilImplMapTable, std::vector<SgAsmCilImplMap*> SgAsmCilImplMapTable::*, &SgAsmCilImplMapTable::p_elements>;
40169};
40171 using node = SgAsmCilImplMapTable;
40172 using base = SgAsmCilMetadata;
40173 static constexpr char const * const name{"AsmCilImplMapTable"};
40174 static constexpr unsigned long variant{1020};
40175 static constexpr bool concrete{true};
40176 using subclasses_t = mp::List<>;
40178};
40179template <> struct node_from_variant_t<1020> { using type = SgAsmCilImplMapTable; };
40180
40181// Class: AsmCilInterfaceImplTable
40182template <> struct describe_field_t<SgAsmCilInterfaceImplTable,std::vector<SgAsmCilInterfaceImpl*>,&SgAsmCilInterfaceImplTable::p_elements> {
40184 using field_type = std::vector<SgAsmCilInterfaceImpl*>;
40185 static constexpr size_t position{0};
40186 static constexpr char const * const name{"elements"};
40187 static constexpr char const * const typestr{"std::vector<SgAsmCilInterfaceImpl*>"};
40188 static constexpr bool traverse{true};
40189 static constexpr auto mbr_ptr{&SgAsmCilInterfaceImplTable::p_elements};
40190 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40191 using bind = Desc<SgAsmCilInterfaceImplTable, std::vector<SgAsmCilInterfaceImpl*> SgAsmCilInterfaceImplTable::*, &SgAsmCilInterfaceImplTable::p_elements>;
40192};
40195 using base = SgAsmCilMetadata;
40196 static constexpr char const * const name{"AsmCilInterfaceImplTable"};
40197 static constexpr unsigned long variant{1021};
40198 static constexpr bool concrete{true};
40199 using subclasses_t = mp::List<>;
40201};
40202template <> struct node_from_variant_t<1021> { using type = SgAsmCilInterfaceImplTable; };
40203
40204// Class: AsmCilManifestResourceTable
40205template <> struct describe_field_t<SgAsmCilManifestResourceTable,std::vector<SgAsmCilManifestResource*>,&SgAsmCilManifestResourceTable::p_elements> {
40207 using field_type = std::vector<SgAsmCilManifestResource*>;
40208 static constexpr size_t position{0};
40209 static constexpr char const * const name{"elements"};
40210 static constexpr char const * const typestr{"std::vector<SgAsmCilManifestResource*>"};
40211 static constexpr bool traverse{true};
40212 static constexpr auto mbr_ptr{&SgAsmCilManifestResourceTable::p_elements};
40213 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40214 using bind = Desc<SgAsmCilManifestResourceTable, std::vector<SgAsmCilManifestResource*> SgAsmCilManifestResourceTable::*, &SgAsmCilManifestResourceTable::p_elements>;
40215};
40218 using base = SgAsmCilMetadata;
40219 static constexpr char const * const name{"AsmCilManifestResourceTable"};
40220 static constexpr unsigned long variant{1022};
40221 static constexpr bool concrete{true};
40222 using subclasses_t = mp::List<>;
40224};
40225template <> struct node_from_variant_t<1022> { using type = SgAsmCilManifestResourceTable; };
40226
40227// Class: AsmCilMemberRefTable
40228template <> struct describe_field_t<SgAsmCilMemberRefTable,std::vector<SgAsmCilMemberRef*>,&SgAsmCilMemberRefTable::p_elements> {
40230 using field_type = std::vector<SgAsmCilMemberRef*>;
40231 static constexpr size_t position{0};
40232 static constexpr char const * const name{"elements"};
40233 static constexpr char const * const typestr{"std::vector<SgAsmCilMemberRef*>"};
40234 static constexpr bool traverse{true};
40235 static constexpr auto mbr_ptr{&SgAsmCilMemberRefTable::p_elements};
40236 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40237 using bind = Desc<SgAsmCilMemberRefTable, std::vector<SgAsmCilMemberRef*> SgAsmCilMemberRefTable::*, &SgAsmCilMemberRefTable::p_elements>;
40238};
40241 using base = SgAsmCilMetadata;
40242 static constexpr char const * const name{"AsmCilMemberRefTable"};
40243 static constexpr unsigned long variant{1023};
40244 static constexpr bool concrete{true};
40245 using subclasses_t = mp::List<>;
40247};
40248template <> struct node_from_variant_t<1023> { using type = SgAsmCilMemberRefTable; };
40249
40250// Class: AsmCilMethodDefTable
40251template <> struct describe_field_t<SgAsmCilMethodDefTable,std::vector<SgAsmCilMethodDef*>,&SgAsmCilMethodDefTable::p_elements> {
40253 using field_type = std::vector<SgAsmCilMethodDef*>;
40254 static constexpr size_t position{0};
40255 static constexpr char const * const name{"elements"};
40256 static constexpr char const * const typestr{"std::vector<SgAsmCilMethodDef*>"};
40257 static constexpr bool traverse{true};
40258 static constexpr auto mbr_ptr{&SgAsmCilMethodDefTable::p_elements};
40259 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40260 using bind = Desc<SgAsmCilMethodDefTable, std::vector<SgAsmCilMethodDef*> SgAsmCilMethodDefTable::*, &SgAsmCilMethodDefTable::p_elements>;
40261};
40264 using base = SgAsmCilMetadata;
40265 static constexpr char const * const name{"AsmCilMethodDefTable"};
40266 static constexpr unsigned long variant{1024};
40267 static constexpr bool concrete{true};
40268 using subclasses_t = mp::List<>;
40270};
40271template <> struct node_from_variant_t<1024> { using type = SgAsmCilMethodDefTable; };
40272
40273// Class: AsmCilMethodImplTable
40274template <> struct describe_field_t<SgAsmCilMethodImplTable,std::vector<SgAsmCilMethodImpl*>,&SgAsmCilMethodImplTable::p_elements> {
40276 using field_type = std::vector<SgAsmCilMethodImpl*>;
40277 static constexpr size_t position{0};
40278 static constexpr char const * const name{"elements"};
40279 static constexpr char const * const typestr{"std::vector<SgAsmCilMethodImpl*>"};
40280 static constexpr bool traverse{true};
40281 static constexpr auto mbr_ptr{&SgAsmCilMethodImplTable::p_elements};
40282 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40283 using bind = Desc<SgAsmCilMethodImplTable, std::vector<SgAsmCilMethodImpl*> SgAsmCilMethodImplTable::*, &SgAsmCilMethodImplTable::p_elements>;
40284};
40287 using base = SgAsmCilMetadata;
40288 static constexpr char const * const name{"AsmCilMethodImplTable"};
40289 static constexpr unsigned long variant{1025};
40290 static constexpr bool concrete{true};
40291 using subclasses_t = mp::List<>;
40293};
40294template <> struct node_from_variant_t<1025> { using type = SgAsmCilMethodImplTable; };
40295
40296// Class: AsmCilMethodSemanticsTable
40297template <> struct describe_field_t<SgAsmCilMethodSemanticsTable,std::vector<SgAsmCilMethodSemantics*>,&SgAsmCilMethodSemanticsTable::p_elements> {
40299 using field_type = std::vector<SgAsmCilMethodSemantics*>;
40300 static constexpr size_t position{0};
40301 static constexpr char const * const name{"elements"};
40302 static constexpr char const * const typestr{"std::vector<SgAsmCilMethodSemantics*>"};
40303 static constexpr bool traverse{true};
40304 static constexpr auto mbr_ptr{&SgAsmCilMethodSemanticsTable::p_elements};
40305 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40306 using bind = Desc<SgAsmCilMethodSemanticsTable, std::vector<SgAsmCilMethodSemantics*> SgAsmCilMethodSemanticsTable::*, &SgAsmCilMethodSemanticsTable::p_elements>;
40307};
40310 using base = SgAsmCilMetadata;
40311 static constexpr char const * const name{"AsmCilMethodSemanticsTable"};
40312 static constexpr unsigned long variant{1026};
40313 static constexpr bool concrete{true};
40314 using subclasses_t = mp::List<>;
40316};
40317template <> struct node_from_variant_t<1026> { using type = SgAsmCilMethodSemanticsTable; };
40318
40319// Class: AsmCilMethodSpecTable
40320template <> struct describe_field_t<SgAsmCilMethodSpecTable,std::vector<SgAsmCilMethodSpec*>,&SgAsmCilMethodSpecTable::p_elements> {
40322 using field_type = std::vector<SgAsmCilMethodSpec*>;
40323 static constexpr size_t position{0};
40324 static constexpr char const * const name{"elements"};
40325 static constexpr char const * const typestr{"std::vector<SgAsmCilMethodSpec*>"};
40326 static constexpr bool traverse{true};
40327 static constexpr auto mbr_ptr{&SgAsmCilMethodSpecTable::p_elements};
40328 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40329 using bind = Desc<SgAsmCilMethodSpecTable, std::vector<SgAsmCilMethodSpec*> SgAsmCilMethodSpecTable::*, &SgAsmCilMethodSpecTable::p_elements>;
40330};
40333 using base = SgAsmCilMetadata;
40334 static constexpr char const * const name{"AsmCilMethodSpecTable"};
40335 static constexpr unsigned long variant{1027};
40336 static constexpr bool concrete{true};
40337 using subclasses_t = mp::List<>;
40339};
40340template <> struct node_from_variant_t<1027> { using type = SgAsmCilMethodSpecTable; };
40341
40342// Class: AsmCilModuleTable
40343template <> struct describe_field_t<SgAsmCilModuleTable,std::vector<SgAsmCilModule*>,&SgAsmCilModuleTable::p_elements> {
40345 using field_type = std::vector<SgAsmCilModule*>;
40346 static constexpr size_t position{0};
40347 static constexpr char const * const name{"elements"};
40348 static constexpr char const * const typestr{"std::vector<SgAsmCilModule*>"};
40349 static constexpr bool traverse{true};
40350 static constexpr auto mbr_ptr{&SgAsmCilModuleTable::p_elements};
40351 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40352 using bind = Desc<SgAsmCilModuleTable, std::vector<SgAsmCilModule*> SgAsmCilModuleTable::*, &SgAsmCilModuleTable::p_elements>;
40353};
40355 using node = SgAsmCilModuleTable;
40356 using base = SgAsmCilMetadata;
40357 static constexpr char const * const name{"AsmCilModuleTable"};
40358 static constexpr unsigned long variant{1028};
40359 static constexpr bool concrete{true};
40360 using subclasses_t = mp::List<>;
40362};
40363template <> struct node_from_variant_t<1028> { using type = SgAsmCilModuleTable; };
40364
40365// Class: AsmCilModuleRefTable
40366template <> struct describe_field_t<SgAsmCilModuleRefTable,std::vector<SgAsmCilModuleRef*>,&SgAsmCilModuleRefTable::p_elements> {
40368 using field_type = std::vector<SgAsmCilModuleRef*>;
40369 static constexpr size_t position{0};
40370 static constexpr char const * const name{"elements"};
40371 static constexpr char const * const typestr{"std::vector<SgAsmCilModuleRef*>"};
40372 static constexpr bool traverse{true};
40373 static constexpr auto mbr_ptr{&SgAsmCilModuleRefTable::p_elements};
40374 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40375 using bind = Desc<SgAsmCilModuleRefTable, std::vector<SgAsmCilModuleRef*> SgAsmCilModuleRefTable::*, &SgAsmCilModuleRefTable::p_elements>;
40376};
40379 using base = SgAsmCilMetadata;
40380 static constexpr char const * const name{"AsmCilModuleRefTable"};
40381 static constexpr unsigned long variant{1029};
40382 static constexpr bool concrete{true};
40383 using subclasses_t = mp::List<>;
40385};
40386template <> struct node_from_variant_t<1029> { using type = SgAsmCilModuleRefTable; };
40387
40388// Class: AsmCilNestedClassTable
40389template <> struct describe_field_t<SgAsmCilNestedClassTable,std::vector<SgAsmCilNestedClass*>,&SgAsmCilNestedClassTable::p_elements> {
40391 using field_type = std::vector<SgAsmCilNestedClass*>;
40392 static constexpr size_t position{0};
40393 static constexpr char const * const name{"elements"};
40394 static constexpr char const * const typestr{"std::vector<SgAsmCilNestedClass*>"};
40395 static constexpr bool traverse{true};
40396 static constexpr auto mbr_ptr{&SgAsmCilNestedClassTable::p_elements};
40397 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40398 using bind = Desc<SgAsmCilNestedClassTable, std::vector<SgAsmCilNestedClass*> SgAsmCilNestedClassTable::*, &SgAsmCilNestedClassTable::p_elements>;
40399};
40402 using base = SgAsmCilMetadata;
40403 static constexpr char const * const name{"AsmCilNestedClassTable"};
40404 static constexpr unsigned long variant{1030};
40405 static constexpr bool concrete{true};
40406 using subclasses_t = mp::List<>;
40408};
40409template <> struct node_from_variant_t<1030> { using type = SgAsmCilNestedClassTable; };
40410
40411// Class: AsmCilParamTable
40412template <> struct describe_field_t<SgAsmCilParamTable,std::vector<SgAsmCilParam*>,&SgAsmCilParamTable::p_elements> {
40413 using parent = SgAsmCilParamTable;
40414 using field_type = std::vector<SgAsmCilParam*>;
40415 static constexpr size_t position{0};
40416 static constexpr char const * const name{"elements"};
40417 static constexpr char const * const typestr{"std::vector<SgAsmCilParam*>"};
40418 static constexpr bool traverse{true};
40419 static constexpr auto mbr_ptr{&SgAsmCilParamTable::p_elements};
40420 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40421 using bind = Desc<SgAsmCilParamTable, std::vector<SgAsmCilParam*> SgAsmCilParamTable::*, &SgAsmCilParamTable::p_elements>;
40422};
40424 using node = SgAsmCilParamTable;
40425 using base = SgAsmCilMetadata;
40426 static constexpr char const * const name{"AsmCilParamTable"};
40427 static constexpr unsigned long variant{1031};
40428 static constexpr bool concrete{true};
40429 using subclasses_t = mp::List<>;
40431};
40432template <> struct node_from_variant_t<1031> { using type = SgAsmCilParamTable; };
40433
40434// Class: AsmCilPropertyTable
40435template <> struct describe_field_t<SgAsmCilPropertyTable,std::vector<SgAsmCilProperty*>,&SgAsmCilPropertyTable::p_elements> {
40437 using field_type = std::vector<SgAsmCilProperty*>;
40438 static constexpr size_t position{0};
40439 static constexpr char const * const name{"elements"};
40440 static constexpr char const * const typestr{"std::vector<SgAsmCilProperty*>"};
40441 static constexpr bool traverse{true};
40442 static constexpr auto mbr_ptr{&SgAsmCilPropertyTable::p_elements};
40443 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40444 using bind = Desc<SgAsmCilPropertyTable, std::vector<SgAsmCilProperty*> SgAsmCilPropertyTable::*, &SgAsmCilPropertyTable::p_elements>;
40445};
40448 using base = SgAsmCilMetadata;
40449 static constexpr char const * const name{"AsmCilPropertyTable"};
40450 static constexpr unsigned long variant{1032};
40451 static constexpr bool concrete{true};
40452 using subclasses_t = mp::List<>;
40454};
40455template <> struct node_from_variant_t<1032> { using type = SgAsmCilPropertyTable; };
40456
40457// Class: AsmCilPropertyMapTable
40458template <> struct describe_field_t<SgAsmCilPropertyMapTable,std::vector<SgAsmCilPropertyMap*>,&SgAsmCilPropertyMapTable::p_elements> {
40460 using field_type = std::vector<SgAsmCilPropertyMap*>;
40461 static constexpr size_t position{0};
40462 static constexpr char const * const name{"elements"};
40463 static constexpr char const * const typestr{"std::vector<SgAsmCilPropertyMap*>"};
40464 static constexpr bool traverse{true};
40465 static constexpr auto mbr_ptr{&SgAsmCilPropertyMapTable::p_elements};
40466 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40467 using bind = Desc<SgAsmCilPropertyMapTable, std::vector<SgAsmCilPropertyMap*> SgAsmCilPropertyMapTable::*, &SgAsmCilPropertyMapTable::p_elements>;
40468};
40471 using base = SgAsmCilMetadata;
40472 static constexpr char const * const name{"AsmCilPropertyMapTable"};
40473 static constexpr unsigned long variant{1033};
40474 static constexpr bool concrete{true};
40475 using subclasses_t = mp::List<>;
40477};
40478template <> struct node_from_variant_t<1033> { using type = SgAsmCilPropertyMapTable; };
40479
40480// Class: AsmCilStandAloneSigTable
40481template <> struct describe_field_t<SgAsmCilStandAloneSigTable,std::vector<SgAsmCilStandAloneSig*>,&SgAsmCilStandAloneSigTable::p_elements> {
40483 using field_type = std::vector<SgAsmCilStandAloneSig*>;
40484 static constexpr size_t position{0};
40485 static constexpr char const * const name{"elements"};
40486 static constexpr char const * const typestr{"std::vector<SgAsmCilStandAloneSig*>"};
40487 static constexpr bool traverse{true};
40488 static constexpr auto mbr_ptr{&SgAsmCilStandAloneSigTable::p_elements};
40489 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40490 using bind = Desc<SgAsmCilStandAloneSigTable, std::vector<SgAsmCilStandAloneSig*> SgAsmCilStandAloneSigTable::*, &SgAsmCilStandAloneSigTable::p_elements>;
40491};
40494 using base = SgAsmCilMetadata;
40495 static constexpr char const * const name{"AsmCilStandAloneSigTable"};
40496 static constexpr unsigned long variant{1034};
40497 static constexpr bool concrete{true};
40498 using subclasses_t = mp::List<>;
40500};
40501template <> struct node_from_variant_t<1034> { using type = SgAsmCilStandAloneSigTable; };
40502
40503// Class: AsmCilTypeDefTable
40504template <> struct describe_field_t<SgAsmCilTypeDefTable,std::vector<SgAsmCilTypeDef*>,&SgAsmCilTypeDefTable::p_elements> {
40506 using field_type = std::vector<SgAsmCilTypeDef*>;
40507 static constexpr size_t position{0};
40508 static constexpr char const * const name{"elements"};
40509 static constexpr char const * const typestr{"std::vector<SgAsmCilTypeDef*>"};
40510 static constexpr bool traverse{true};
40511 static constexpr auto mbr_ptr{&SgAsmCilTypeDefTable::p_elements};
40512 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40513 using bind = Desc<SgAsmCilTypeDefTable, std::vector<SgAsmCilTypeDef*> SgAsmCilTypeDefTable::*, &SgAsmCilTypeDefTable::p_elements>;
40514};
40516 using node = SgAsmCilTypeDefTable;
40517 using base = SgAsmCilMetadata;
40518 static constexpr char const * const name{"AsmCilTypeDefTable"};
40519 static constexpr unsigned long variant{1035};
40520 static constexpr bool concrete{true};
40521 using subclasses_t = mp::List<>;
40523};
40524template <> struct node_from_variant_t<1035> { using type = SgAsmCilTypeDefTable; };
40525
40526// Class: AsmCilTypeRefTable
40527template <> struct describe_field_t<SgAsmCilTypeRefTable,std::vector<SgAsmCilTypeRef*>,&SgAsmCilTypeRefTable::p_elements> {
40529 using field_type = std::vector<SgAsmCilTypeRef*>;
40530 static constexpr size_t position{0};
40531 static constexpr char const * const name{"elements"};
40532 static constexpr char const * const typestr{"std::vector<SgAsmCilTypeRef*>"};
40533 static constexpr bool traverse{true};
40534 static constexpr auto mbr_ptr{&SgAsmCilTypeRefTable::p_elements};
40535 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40536 using bind = Desc<SgAsmCilTypeRefTable, std::vector<SgAsmCilTypeRef*> SgAsmCilTypeRefTable::*, &SgAsmCilTypeRefTable::p_elements>;
40537};
40539 using node = SgAsmCilTypeRefTable;
40540 using base = SgAsmCilMetadata;
40541 static constexpr char const * const name{"AsmCilTypeRefTable"};
40542 static constexpr unsigned long variant{1036};
40543 static constexpr bool concrete{true};
40544 using subclasses_t = mp::List<>;
40546};
40547template <> struct node_from_variant_t<1036> { using type = SgAsmCilTypeRefTable; };
40548
40549// Class: AsmCilTypeSpecTable
40550template <> struct describe_field_t<SgAsmCilTypeSpecTable,std::vector<SgAsmCilTypeSpec*>,&SgAsmCilTypeSpecTable::p_elements> {
40552 using field_type = std::vector<SgAsmCilTypeSpec*>;
40553 static constexpr size_t position{0};
40554 static constexpr char const * const name{"elements"};
40555 static constexpr char const * const typestr{"std::vector<SgAsmCilTypeSpec*>"};
40556 static constexpr bool traverse{true};
40557 static constexpr auto mbr_ptr{&SgAsmCilTypeSpecTable::p_elements};
40558 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40559 using bind = Desc<SgAsmCilTypeSpecTable, std::vector<SgAsmCilTypeSpec*> SgAsmCilTypeSpecTable::*, &SgAsmCilTypeSpecTable::p_elements>;
40560};
40563 using base = SgAsmCilMetadata;
40564 static constexpr char const * const name{"AsmCilTypeSpecTable"};
40565 static constexpr unsigned long variant{1037};
40566 static constexpr bool concrete{true};
40567 using subclasses_t = mp::List<>;
40569};
40570template <> struct node_from_variant_t<1037> { using type = SgAsmCilTypeSpecTable; };
40571
40572// Class: JvmComposite
40573template <> struct describe_node_t<SgJvmComposite> {
40574 using node = SgJvmComposite;
40575 using base = SgBinaryComposite;
40576 static constexpr char const * const name{"JvmComposite"};
40577 static constexpr unsigned long variant{1038};
40578 static constexpr bool concrete{true};
40579 using subclasses_t = mp::List<>;
40580 using fields_t = mp::List<>;
40581};
40582template <> struct node_from_variant_t<1038> { using type = SgJvmComposite; };
40583
40584// Class: FortranContinueStmt
40587 using base = SgStatement;
40588 static constexpr char const * const name{"FortranContinueStmt"};
40589 static constexpr unsigned long variant{1039};
40590 static constexpr bool concrete{true};
40591 using subclasses_t = mp::List<>;
40592 using fields_t = mp::List<>;
40593};
40594template <> struct node_from_variant_t<1039> { using type = SgFortranContinueStmt; };
40595
40596// Class: AsmJvmStackMapTable
40597template <> struct describe_field_t<SgAsmJvmStackMapTable,SgAsmJvmStackMapFramePtrList,&SgAsmJvmStackMapTable::p_entries> {
40599 using field_type = SgAsmJvmStackMapFramePtrList;
40600 static constexpr size_t position{0};
40601 static constexpr char const * const name{"entries"};
40602 static constexpr char const * const typestr{"SgAsmJvmStackMapFramePtrList"};
40603 static constexpr bool traverse{false};
40604 static constexpr auto mbr_ptr{&SgAsmJvmStackMapTable::p_entries};
40605 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40606 using bind = Desc<SgAsmJvmStackMapTable, SgAsmJvmStackMapFramePtrList SgAsmJvmStackMapTable::*, &SgAsmJvmStackMapTable::p_entries>;
40607};
40610 using base = SgAsmJvmAttribute;
40611 static constexpr char const * const name{"AsmJvmStackMapTable"};
40612 static constexpr unsigned long variant{1040};
40613 static constexpr bool concrete{true};
40614 using subclasses_t = mp::List<>;
40616};
40617template <> struct node_from_variant_t<1040> { using type = SgAsmJvmStackMapTable; };
40618
40619// Class: AsmJvmStackMapFrame
40620template <> struct describe_field_t<SgAsmJvmStackMapFrame,SgAsmJvmStackMapVerificationTypePtrList,&SgAsmJvmStackMapFrame::p_stack> {
40622 using field_type = SgAsmJvmStackMapVerificationTypePtrList;
40623 static constexpr size_t position{0};
40624 static constexpr char const * const name{"stack"};
40625 static constexpr char const * const typestr{"SgAsmJvmStackMapVerificationTypePtrList"};
40626 static constexpr bool traverse{false};
40627 static constexpr auto mbr_ptr{&SgAsmJvmStackMapFrame::p_stack};
40628 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40629 using bind = Desc<SgAsmJvmStackMapFrame, SgAsmJvmStackMapVerificationTypePtrList SgAsmJvmStackMapFrame::*, &SgAsmJvmStackMapFrame::p_stack>;
40630};
40631template <> struct describe_field_t<SgAsmJvmStackMapFrame,SgAsmJvmStackMapVerificationTypePtrList,&SgAsmJvmStackMapFrame::p_locals> {
40633 using field_type = SgAsmJvmStackMapVerificationTypePtrList;
40634 static constexpr size_t position{1};
40635 static constexpr char const * const name{"locals"};
40636 static constexpr char const * const typestr{"SgAsmJvmStackMapVerificationTypePtrList"};
40637 static constexpr bool traverse{false};
40638 static constexpr auto mbr_ptr{&SgAsmJvmStackMapFrame::p_locals};
40639 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40640 using bind = Desc<SgAsmJvmStackMapFrame, SgAsmJvmStackMapVerificationTypePtrList SgAsmJvmStackMapFrame::*, &SgAsmJvmStackMapFrame::p_locals>;
40641};
40642template <> struct describe_field_t<SgAsmJvmStackMapFrame,uint8_t,&SgAsmJvmStackMapFrame::p_frame_type> {
40644 using field_type = uint8_t;
40645 static constexpr size_t position{2};
40646 static constexpr char const * const name{"frame_type"};
40647 static constexpr char const * const typestr{"uint8_t"};
40648 static constexpr bool traverse{false};
40649 static constexpr auto mbr_ptr{&SgAsmJvmStackMapFrame::p_frame_type};
40650 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40651 using bind = Desc<SgAsmJvmStackMapFrame, uint8_t SgAsmJvmStackMapFrame::*, &SgAsmJvmStackMapFrame::p_frame_type>;
40652};
40653template <> struct describe_field_t<SgAsmJvmStackMapFrame,uint16_t,&SgAsmJvmStackMapFrame::p_offset_delta> {
40655 using field_type = uint16_t;
40656 static constexpr size_t position{3};
40657 static constexpr char const * const name{"offset_delta"};
40658 static constexpr char const * const typestr{"uint16_t"};
40659 static constexpr bool traverse{false};
40660 static constexpr auto mbr_ptr{&SgAsmJvmStackMapFrame::p_offset_delta};
40661 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40662 using bind = Desc<SgAsmJvmStackMapFrame, uint16_t SgAsmJvmStackMapFrame::*, &SgAsmJvmStackMapFrame::p_offset_delta>;
40663};
40673template <> struct node_from_variant_t<1041> { using type = SgAsmJvmStackMapFrame; };
40674
40675// Class: AsmJvmStackMapVerificationType
40676template <> struct describe_field_t<SgAsmJvmStackMapVerificationType,uint8_t,&SgAsmJvmStackMapVerificationType::p_tag> {
40678 using field_type = uint8_t;
40679 static constexpr size_t position{0};
40680 static constexpr char const * const name{"tag"};
40681 static constexpr char const * const typestr{"uint8_t"};
40682 static constexpr bool traverse{false};
40683 static constexpr auto mbr_ptr{&SgAsmJvmStackMapVerificationType::p_tag};
40684 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40685 using bind = Desc<SgAsmJvmStackMapVerificationType, uint8_t SgAsmJvmStackMapVerificationType::*, &SgAsmJvmStackMapVerificationType::p_tag>;
40686};
40687template <> struct describe_field_t<SgAsmJvmStackMapVerificationType,uint16_t,&SgAsmJvmStackMapVerificationType::p_cpool_index> {
40689 using field_type = uint16_t;
40690 static constexpr size_t position{1};
40691 static constexpr char const * const name{"cpool_index"};
40692 static constexpr char const * const typestr{"uint16_t"};
40693 static constexpr bool traverse{false};
40694 static constexpr auto mbr_ptr{&SgAsmJvmStackMapVerificationType::p_cpool_index};
40695 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40696 using bind = Desc<SgAsmJvmStackMapVerificationType, uint16_t SgAsmJvmStackMapVerificationType::*, &SgAsmJvmStackMapVerificationType::p_cpool_index>;
40697};
40698template <> struct describe_field_t<SgAsmJvmStackMapVerificationType,uint16_t,&SgAsmJvmStackMapVerificationType::p_offset> {
40700 using field_type = uint16_t;
40701 static constexpr size_t position{2};
40702 static constexpr char const * const name{"offset"};
40703 static constexpr char const * const typestr{"uint16_t"};
40704 static constexpr bool traverse{false};
40705 static constexpr auto mbr_ptr{&SgAsmJvmStackMapVerificationType::p_offset};
40706 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40707 using bind = Desc<SgAsmJvmStackMapVerificationType, uint16_t SgAsmJvmStackMapVerificationType::*, &SgAsmJvmStackMapVerificationType::p_offset>;
40708};
40718template <> struct node_from_variant_t<1042> { using type = SgAsmJvmStackMapVerificationType; };
40719
40720// Class: AsmJvmBootstrapMethod
40721template <> struct describe_field_t<SgAsmJvmBootstrapMethod,uint16_t,&SgAsmJvmBootstrapMethod::p_bootstrap_method_ref> {
40723 using field_type = uint16_t;
40724 static constexpr size_t position{0};
40725 static constexpr char const * const name{"bootstrap_method_ref"};
40726 static constexpr char const * const typestr{"uint16_t"};
40727 static constexpr bool traverse{false};
40728 static constexpr auto mbr_ptr{&SgAsmJvmBootstrapMethod::p_bootstrap_method_ref};
40729 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40730 using bind = Desc<SgAsmJvmBootstrapMethod, uint16_t SgAsmJvmBootstrapMethod::*, &SgAsmJvmBootstrapMethod::p_bootstrap_method_ref>;
40731};
40732template <> struct describe_field_t<SgAsmJvmBootstrapMethod,SgUnsigned16List,&SgAsmJvmBootstrapMethod::p_bootstrap_arguments> {
40734 using field_type = SgUnsigned16List;
40735 static constexpr size_t position{1};
40736 static constexpr char const * const name{"bootstrap_arguments"};
40737 static constexpr char const * const typestr{"SgUnsigned16List"};
40738 static constexpr bool traverse{false};
40739 static constexpr auto mbr_ptr{&SgAsmJvmBootstrapMethod::p_bootstrap_arguments};
40740 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40741 using bind = Desc<SgAsmJvmBootstrapMethod, SgUnsigned16List SgAsmJvmBootstrapMethod::*, &SgAsmJvmBootstrapMethod::p_bootstrap_arguments>;
40742};
40745 using base = SgAsmJvmNode;
40746 static constexpr char const * const name{"AsmJvmBootstrapMethod"};
40747 static constexpr unsigned long variant{1043};
40748 static constexpr bool concrete{true};
40749 using subclasses_t = mp::List<>;
40751};
40752template <> struct node_from_variant_t<1043> { using type = SgAsmJvmBootstrapMethod; };
40753
40754// Class: AsmJvmBootstrapMethods
40755template <> struct describe_field_t<SgAsmJvmBootstrapMethods,SgAsmJvmBootstrapMethodPtrList,&SgAsmJvmBootstrapMethods::p_bootstrap_methods> {
40757 using field_type = SgAsmJvmBootstrapMethodPtrList;
40758 static constexpr size_t position{0};
40759 static constexpr char const * const name{"bootstrap_methods"};
40760 static constexpr char const * const typestr{"SgAsmJvmBootstrapMethodPtrList"};
40761 static constexpr bool traverse{false};
40762 static constexpr auto mbr_ptr{&SgAsmJvmBootstrapMethods::p_bootstrap_methods};
40763 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40764 using bind = Desc<SgAsmJvmBootstrapMethods, SgAsmJvmBootstrapMethodPtrList SgAsmJvmBootstrapMethods::*, &SgAsmJvmBootstrapMethods::p_bootstrap_methods>;
40765};
40768 using base = SgAsmJvmAttribute;
40769 static constexpr char const * const name{"AsmJvmBootstrapMethods"};
40770 static constexpr unsigned long variant{1044};
40771 static constexpr bool concrete{true};
40772 using subclasses_t = mp::List<>;
40774};
40775template <> struct node_from_variant_t<1044> { using type = SgAsmJvmBootstrapMethods; };
40776
40777// Class: AsmJvmExceptions
40778template <> struct describe_field_t<SgAsmJvmExceptions,SgUnsigned16List,&SgAsmJvmExceptions::p_exception_index_table> {
40779 using parent = SgAsmJvmExceptions;
40780 using field_type = SgUnsigned16List;
40781 static constexpr size_t position{0};
40782 static constexpr char const * const name{"exception_index_table"};
40783 static constexpr char const * const typestr{"SgUnsigned16List"};
40784 static constexpr bool traverse{false};
40785 static constexpr auto mbr_ptr{&SgAsmJvmExceptions::p_exception_index_table};
40786 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40787 using bind = Desc<SgAsmJvmExceptions, SgUnsigned16List SgAsmJvmExceptions::*, &SgAsmJvmExceptions::p_exception_index_table>;
40788};
40790 using node = SgAsmJvmExceptions;
40791 using base = SgAsmJvmAttribute;
40792 static constexpr char const * const name{"AsmJvmExceptions"};
40793 static constexpr unsigned long variant{1045};
40794 static constexpr bool concrete{true};
40795 using subclasses_t = mp::List<>;
40797};
40798template <> struct node_from_variant_t<1045> { using type = SgAsmJvmExceptions; };
40799
40800// Class: AsmJvmNestMembers
40801template <> struct describe_field_t<SgAsmJvmNestMembers,SgUnsigned16List,&SgAsmJvmNestMembers::p_classes> {
40803 using field_type = SgUnsigned16List;
40804 static constexpr size_t position{0};
40805 static constexpr char const * const name{"classes"};
40806 static constexpr char const * const typestr{"SgUnsigned16List"};
40807 static constexpr bool traverse{false};
40808 static constexpr auto mbr_ptr{&SgAsmJvmNestMembers::p_classes};
40809 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40810 using bind = Desc<SgAsmJvmNestMembers, SgUnsigned16List SgAsmJvmNestMembers::*, &SgAsmJvmNestMembers::p_classes>;
40811};
40813 using node = SgAsmJvmNestMembers;
40814 using base = SgAsmJvmAttribute;
40815 static constexpr char const * const name{"AsmJvmNestMembers"};
40816 static constexpr unsigned long variant{1046};
40817 static constexpr bool concrete{true};
40818 using subclasses_t = mp::List<>;
40820};
40821template <> struct node_from_variant_t<1046> { using type = SgAsmJvmNestMembers; };
40822
40823// Class: AsmJvmNestHost
40824template <> struct describe_field_t<SgAsmJvmNestHost,uint16_t,&SgAsmJvmNestHost::p_host_class_index> {
40825 using parent = SgAsmJvmNestHost;
40826 using field_type = uint16_t;
40827 static constexpr size_t position{0};
40828 static constexpr char const * const name{"host_class_index"};
40829 static constexpr char const * const typestr{"uint16_t"};
40830 static constexpr bool traverse{false};
40831 static constexpr auto mbr_ptr{&SgAsmJvmNestHost::p_host_class_index};
40832 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40833 using bind = Desc<SgAsmJvmNestHost, uint16_t SgAsmJvmNestHost::*, &SgAsmJvmNestHost::p_host_class_index>;
40834};
40836 using node = SgAsmJvmNestHost;
40837 using base = SgAsmJvmAttribute;
40838 static constexpr char const * const name{"AsmJvmNestHost"};
40839 static constexpr unsigned long variant{1047};
40840 static constexpr bool concrete{true};
40841 using subclasses_t = mp::List<>;
40843};
40844template <> struct node_from_variant_t<1047> { using type = SgAsmJvmNestHost; };
40845
40846// Class: JovialLabelDeclaration
40847template <> struct describe_field_t<SgJovialLabelDeclaration,std::string,&SgJovialLabelDeclaration::p_label> {
40849 using field_type = std::string;
40850 static constexpr size_t position{0};
40851 static constexpr char const * const name{"label"};
40852 static constexpr char const * const typestr{"std::string"};
40853 static constexpr bool traverse{false};
40854 static constexpr auto mbr_ptr{&SgJovialLabelDeclaration::p_label};
40855 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40856 using bind = Desc<SgJovialLabelDeclaration, std::string SgJovialLabelDeclaration::*, &SgJovialLabelDeclaration::p_label>;
40857};
40858template <> struct describe_field_t<SgJovialLabelDeclaration,SgJovialLabelDeclaration::label_type_enum,&SgJovialLabelDeclaration::p_label_type> {
40861 static constexpr size_t position{1};
40862 static constexpr char const * const name{"label_type"};
40863 static constexpr char const * const typestr{"SgJovialLabelDeclaration::label_type_enum"};
40864 static constexpr bool traverse{false};
40865 static constexpr auto mbr_ptr{&SgJovialLabelDeclaration::p_label_type};
40866 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40867 using bind = Desc<SgJovialLabelDeclaration, SgJovialLabelDeclaration::label_type_enum SgJovialLabelDeclaration::*, &SgJovialLabelDeclaration::p_label_type>;
40868};
40872 static constexpr char const * const name{"JovialLabelDeclaration"};
40873 static constexpr unsigned long variant{1048};
40874 static constexpr bool concrete{true};
40875 using subclasses_t = mp::List<>;
40877};
40878template <> struct node_from_variant_t<1048> { using type = SgJovialLabelDeclaration; };
40879
40880// Class: AsmJvmLocalVariableEntry
40881template <> struct describe_field_t<SgAsmJvmLocalVariableEntry,uint16_t,&SgAsmJvmLocalVariableEntry::p_start_pc> {
40883 using field_type = uint16_t;
40884 static constexpr size_t position{0};
40885 static constexpr char const * const name{"start_pc"};
40886 static constexpr char const * const typestr{"uint16_t"};
40887 static constexpr bool traverse{false};
40888 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableEntry::p_start_pc};
40889 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40890 using bind = Desc<SgAsmJvmLocalVariableEntry, uint16_t SgAsmJvmLocalVariableEntry::*, &SgAsmJvmLocalVariableEntry::p_start_pc>;
40891};
40892template <> struct describe_field_t<SgAsmJvmLocalVariableEntry,uint16_t,&SgAsmJvmLocalVariableEntry::p_length> {
40894 using field_type = uint16_t;
40895 static constexpr size_t position{1};
40896 static constexpr char const * const name{"length"};
40897 static constexpr char const * const typestr{"uint16_t"};
40898 static constexpr bool traverse{false};
40899 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableEntry::p_length};
40900 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40901 using bind = Desc<SgAsmJvmLocalVariableEntry, uint16_t SgAsmJvmLocalVariableEntry::*, &SgAsmJvmLocalVariableEntry::p_length>;
40902};
40903template <> struct describe_field_t<SgAsmJvmLocalVariableEntry,uint16_t,&SgAsmJvmLocalVariableEntry::p_name_index> {
40905 using field_type = uint16_t;
40906 static constexpr size_t position{2};
40907 static constexpr char const * const name{"name_index"};
40908 static constexpr char const * const typestr{"uint16_t"};
40909 static constexpr bool traverse{false};
40910 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableEntry::p_name_index};
40911 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40912 using bind = Desc<SgAsmJvmLocalVariableEntry, uint16_t SgAsmJvmLocalVariableEntry::*, &SgAsmJvmLocalVariableEntry::p_name_index>;
40913};
40914template <> struct describe_field_t<SgAsmJvmLocalVariableEntry,uint16_t,&SgAsmJvmLocalVariableEntry::p_descriptor_index> {
40916 using field_type = uint16_t;
40917 static constexpr size_t position{3};
40918 static constexpr char const * const name{"descriptor_index"};
40919 static constexpr char const * const typestr{"uint16_t"};
40920 static constexpr bool traverse{false};
40921 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableEntry::p_descriptor_index};
40922 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40923 using bind = Desc<SgAsmJvmLocalVariableEntry, uint16_t SgAsmJvmLocalVariableEntry::*, &SgAsmJvmLocalVariableEntry::p_descriptor_index>;
40924};
40925template <> struct describe_field_t<SgAsmJvmLocalVariableEntry,uint16_t,&SgAsmJvmLocalVariableEntry::p_index> {
40927 using field_type = uint16_t;
40928 static constexpr size_t position{4};
40929 static constexpr char const * const name{"index"};
40930 static constexpr char const * const typestr{"uint16_t"};
40931 static constexpr bool traverse{false};
40932 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableEntry::p_index};
40933 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40934 using bind = Desc<SgAsmJvmLocalVariableEntry, uint16_t SgAsmJvmLocalVariableEntry::*, &SgAsmJvmLocalVariableEntry::p_index>;
40935};
40945template <> struct node_from_variant_t<1049> { using type = SgAsmJvmLocalVariableEntry; };
40946
40947// Class: AsmJvmLocalVariableTable
40948template <> struct describe_field_t<SgAsmJvmLocalVariableTable,SgAsmJvmLocalVariableEntryPtrList,&SgAsmJvmLocalVariableTable::p_local_variable_table> {
40950 using field_type = SgAsmJvmLocalVariableEntryPtrList;
40951 static constexpr size_t position{0};
40952 static constexpr char const * const name{"local_variable_table"};
40953 static constexpr char const * const typestr{"SgAsmJvmLocalVariableEntryPtrList"};
40954 static constexpr bool traverse{false};
40955 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableTable::p_local_variable_table};
40956 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40957 using bind = Desc<SgAsmJvmLocalVariableTable, SgAsmJvmLocalVariableEntryPtrList SgAsmJvmLocalVariableTable::*, &SgAsmJvmLocalVariableTable::p_local_variable_table>;
40958};
40961 using base = SgAsmJvmAttribute;
40962 static constexpr char const * const name{"AsmJvmLocalVariableTable"};
40963 static constexpr unsigned long variant{1050};
40964 static constexpr bool concrete{true};
40965 using subclasses_t = mp::List<>;
40967};
40968template <> struct node_from_variant_t<1050> { using type = SgAsmJvmLocalVariableTable; };
40969
40970// Class: AsmJvmLocalVariableTypeEntry
40971template <> struct describe_field_t<SgAsmJvmLocalVariableTypeEntry,uint16_t,&SgAsmJvmLocalVariableTypeEntry::p_start_pc> {
40973 using field_type = uint16_t;
40974 static constexpr size_t position{0};
40975 static constexpr char const * const name{"start_pc"};
40976 static constexpr char const * const typestr{"uint16_t"};
40977 static constexpr bool traverse{false};
40978 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableTypeEntry::p_start_pc};
40979 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40980 using bind = Desc<SgAsmJvmLocalVariableTypeEntry, uint16_t SgAsmJvmLocalVariableTypeEntry::*, &SgAsmJvmLocalVariableTypeEntry::p_start_pc>;
40981};
40982template <> struct describe_field_t<SgAsmJvmLocalVariableTypeEntry,uint16_t,&SgAsmJvmLocalVariableTypeEntry::p_length> {
40984 using field_type = uint16_t;
40985 static constexpr size_t position{1};
40986 static constexpr char const * const name{"length"};
40987 static constexpr char const * const typestr{"uint16_t"};
40988 static constexpr bool traverse{false};
40989 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableTypeEntry::p_length};
40990 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
40991 using bind = Desc<SgAsmJvmLocalVariableTypeEntry, uint16_t SgAsmJvmLocalVariableTypeEntry::*, &SgAsmJvmLocalVariableTypeEntry::p_length>;
40992};
40993template <> struct describe_field_t<SgAsmJvmLocalVariableTypeEntry,uint16_t,&SgAsmJvmLocalVariableTypeEntry::p_name_index> {
40995 using field_type = uint16_t;
40996 static constexpr size_t position{2};
40997 static constexpr char const * const name{"name_index"};
40998 static constexpr char const * const typestr{"uint16_t"};
40999 static constexpr bool traverse{false};
41000 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableTypeEntry::p_name_index};
41001 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41002 using bind = Desc<SgAsmJvmLocalVariableTypeEntry, uint16_t SgAsmJvmLocalVariableTypeEntry::*, &SgAsmJvmLocalVariableTypeEntry::p_name_index>;
41003};
41004template <> struct describe_field_t<SgAsmJvmLocalVariableTypeEntry,uint16_t,&SgAsmJvmLocalVariableTypeEntry::p_signature_index> {
41006 using field_type = uint16_t;
41007 static constexpr size_t position{3};
41008 static constexpr char const * const name{"signature_index"};
41009 static constexpr char const * const typestr{"uint16_t"};
41010 static constexpr bool traverse{false};
41011 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableTypeEntry::p_signature_index};
41012 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41013 using bind = Desc<SgAsmJvmLocalVariableTypeEntry, uint16_t SgAsmJvmLocalVariableTypeEntry::*, &SgAsmJvmLocalVariableTypeEntry::p_signature_index>;
41014};
41015template <> struct describe_field_t<SgAsmJvmLocalVariableTypeEntry,uint16_t,&SgAsmJvmLocalVariableTypeEntry::p_index> {
41017 using field_type = uint16_t;
41018 static constexpr size_t position{4};
41019 static constexpr char const * const name{"index"};
41020 static constexpr char const * const typestr{"uint16_t"};
41021 static constexpr bool traverse{false};
41022 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableTypeEntry::p_index};
41023 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41024 using bind = Desc<SgAsmJvmLocalVariableTypeEntry, uint16_t SgAsmJvmLocalVariableTypeEntry::*, &SgAsmJvmLocalVariableTypeEntry::p_index>;
41025};
41035template <> struct node_from_variant_t<1051> { using type = SgAsmJvmLocalVariableTypeEntry; };
41036
41037// Class: AsmJvmLocalVariableTypeTable
41038template <> struct describe_field_t<SgAsmJvmLocalVariableTypeTable,SgAsmJvmLocalVariableTypeEntryPtrList,&SgAsmJvmLocalVariableTypeTable::p_local_variable_type_table> {
41040 using field_type = SgAsmJvmLocalVariableTypeEntryPtrList;
41041 static constexpr size_t position{0};
41042 static constexpr char const * const name{"local_variable_type_table"};
41043 static constexpr char const * const typestr{"SgAsmJvmLocalVariableTypeEntryPtrList"};
41044 static constexpr bool traverse{false};
41045 static constexpr auto mbr_ptr{&SgAsmJvmLocalVariableTypeTable::p_local_variable_type_table};
41046 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41047 using bind = Desc<SgAsmJvmLocalVariableTypeTable, SgAsmJvmLocalVariableTypeEntryPtrList SgAsmJvmLocalVariableTypeTable::*, &SgAsmJvmLocalVariableTypeTable::p_local_variable_type_table>;
41048};
41051 using base = SgAsmJvmAttribute;
41052 static constexpr char const * const name{"AsmJvmLocalVariableTypeTable"};
41053 static constexpr unsigned long variant{1052};
41054 static constexpr bool concrete{true};
41055 using subclasses_t = mp::List<>;
41057};
41058template <> struct node_from_variant_t<1052> { using type = SgAsmJvmLocalVariableTypeTable; };
41059
41060// Class: AsmUserInstruction
41061template <> struct describe_field_t<SgAsmUserInstruction,unsigned,&SgAsmUserInstruction::p_kind> {
41063 using field_type = unsigned;
41064 static constexpr size_t position{0};
41065 static constexpr char const * const name{"kind"};
41066 static constexpr char const * const typestr{"unsigned"};
41067 static constexpr bool traverse{false};
41068 static constexpr auto mbr_ptr{&SgAsmUserInstruction::p_kind};
41069 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41070 using bind = Desc<SgAsmUserInstruction, unsigned SgAsmUserInstruction::*, &SgAsmUserInstruction::p_kind>;
41071};
41073 using node = SgAsmUserInstruction;
41074 using base = SgAsmInstruction;
41075 static constexpr char const * const name{"AsmUserInstruction"};
41076 static constexpr unsigned long variant{1053};
41077 static constexpr bool concrete{true};
41078 using subclasses_t = mp::List<>;
41080};
41081template <> struct node_from_variant_t<1053> { using type = SgAsmUserInstruction; };
41082
41083// Class: AsmJvmMethodParameters
41084template <> struct describe_field_t<SgAsmJvmMethodParameters,SgAsmJvmMethodParametersEntryPtrList,&SgAsmJvmMethodParameters::p_parameters> {
41086 using field_type = SgAsmJvmMethodParametersEntryPtrList;
41087 static constexpr size_t position{0};
41088 static constexpr char const * const name{"parameters"};
41089 static constexpr char const * const typestr{"SgAsmJvmMethodParametersEntryPtrList"};
41090 static constexpr bool traverse{false};
41091 static constexpr auto mbr_ptr{&SgAsmJvmMethodParameters::p_parameters};
41092 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41093 using bind = Desc<SgAsmJvmMethodParameters, SgAsmJvmMethodParametersEntryPtrList SgAsmJvmMethodParameters::*, &SgAsmJvmMethodParameters::p_parameters>;
41094};
41097 using base = SgAsmJvmAttribute;
41098 static constexpr char const * const name{"AsmJvmMethodParameters"};
41099 static constexpr unsigned long variant{1054};
41100 static constexpr bool concrete{true};
41101 using subclasses_t = mp::List<>;
41103};
41104template <> struct node_from_variant_t<1054> { using type = SgAsmJvmMethodParameters; };
41105
41106// Class: AsmJvmMethodParametersEntry
41107template <> struct describe_field_t<SgAsmJvmMethodParametersEntry,uint16_t,&SgAsmJvmMethodParametersEntry::p_name_index> {
41109 using field_type = uint16_t;
41110 static constexpr size_t position{0};
41111 static constexpr char const * const name{"name_index"};
41112 static constexpr char const * const typestr{"uint16_t"};
41113 static constexpr bool traverse{false};
41114 static constexpr auto mbr_ptr{&SgAsmJvmMethodParametersEntry::p_name_index};
41115 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41116 using bind = Desc<SgAsmJvmMethodParametersEntry, uint16_t SgAsmJvmMethodParametersEntry::*, &SgAsmJvmMethodParametersEntry::p_name_index>;
41117};
41118template <> struct describe_field_t<SgAsmJvmMethodParametersEntry,uint16_t,&SgAsmJvmMethodParametersEntry::p_access_flags> {
41120 using field_type = uint16_t;
41121 static constexpr size_t position{1};
41122 static constexpr char const * const name{"access_flags"};
41123 static constexpr char const * const typestr{"uint16_t"};
41124 static constexpr bool traverse{false};
41125 static constexpr auto mbr_ptr{&SgAsmJvmMethodParametersEntry::p_access_flags};
41126 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41127 using bind = Desc<SgAsmJvmMethodParametersEntry, uint16_t SgAsmJvmMethodParametersEntry::*, &SgAsmJvmMethodParametersEntry::p_access_flags>;
41128};
41131 using base = SgAsmJvmNode;
41132 static constexpr char const * const name{"AsmJvmMethodParametersEntry"};
41133 static constexpr unsigned long variant{1055};
41134 static constexpr bool concrete{true};
41135 using subclasses_t = mp::List<>;
41137};
41138template <> struct node_from_variant_t<1055> { using type = SgAsmJvmMethodParametersEntry; };
41139
41140// Class: AsmVoidType
41141template <> struct describe_node_t<SgAsmVoidType> {
41142 using node = SgAsmVoidType;
41143 using base = SgAsmType;
41144 static constexpr char const * const name{"AsmVoidType"};
41145 static constexpr unsigned long variant{1056};
41146 static constexpr bool concrete{true};
41147 using subclasses_t = mp::List<>;
41148 using fields_t = mp::List<>;
41149};
41150template <> struct node_from_variant_t<1056> { using type = SgAsmVoidType; };
41151
41152// Class: AsmPointerType
41153template <> struct describe_field_t<SgAsmPointerType,SgAsmType *,&SgAsmPointerType::p_subtype> {
41154 using parent = SgAsmPointerType;
41155 using field_type = SgAsmType *;
41156 static constexpr size_t position{0};
41157 static constexpr char const * const name{"subtype"};
41158 static constexpr char const * const typestr{"SgAsmType *"};
41159 static constexpr bool traverse{true};
41160 static constexpr auto mbr_ptr{&SgAsmPointerType::p_subtype};
41161 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41162 using bind = Desc<SgAsmPointerType, SgAsmType * SgAsmPointerType::*, &SgAsmPointerType::p_subtype>;
41163};
41165 using node = SgAsmPointerType;
41166 using base = SgAsmScalarType;
41167 static constexpr char const * const name{"AsmPointerType"};
41168 static constexpr unsigned long variant{1057};
41169 static constexpr bool concrete{true};
41170 using subclasses_t = mp::List<>;
41172};
41173template <> struct node_from_variant_t<1057> { using type = SgAsmPointerType; };
41174
41175// Class: RangeType
41176template <> struct describe_field_t<SgRangeType,SgType*,&SgRangeType::p_base_type> {
41177 using parent = SgRangeType;
41178 using field_type = SgType*;
41179 static constexpr size_t position{0};
41180 static constexpr char const * const name{"base_type"};
41181 static constexpr char const * const typestr{"SgType*"};
41182 static constexpr bool traverse{false};
41183 static constexpr auto mbr_ptr{&SgRangeType::p_base_type};
41184 template <template <typename NodeT, typename FieldT, FieldT fld_ptr> class Desc>
41185 using bind = Desc<SgRangeType, SgType* SgRangeType::*, &SgRangeType::p_base_type>;
41186};
41187template <> struct describe_node_t<SgRangeType> {
41188 using node = SgRangeType;
41189 using base = SgType;
41190 static constexpr char const * const name{"RangeType"};
41191 static constexpr unsigned long variant{1059};
41192 static constexpr bool concrete{true};
41193 using subclasses_t = mp::List<>;
41195};
41196template <> struct node_from_variant_t<1059> { using type = SgRangeType; };
41197
41198} } }
41199#endif /* Rose_Traits_generated_h */
Stores named attributes in Sage IR nodes.
Describes (part of) a physical CPU register.
Optionally bound relative virtual address.
access_modifier_enum
Access Modifiers (only one value can be specified)
SgExprListExp * p_initializers
This points to a SgExprListExp (list of expressions).
Operand referencing a Co-processor.
String associated with a binary file.
Expression that adds two operands.
Expression that performs an arithmetic, sign-bit preserving right shift.
Expression that concatenates two values to form a wider value.
Expression that divides the first operand by the second.
Base class for binary expressions.
Expression that performs a logical left shift operation.
Expression that performs a logical, sign-bit non-preserving right shift.
Expression that returns the remainder when dividing the first operand by the second.
Expression that performs a logical left shift operation filling low-order bits with one.
Expression that multiplies two operands.
Expression that represents an update to a storage location.
Expression that represents an update to a storage location.
Expression that performs a right rotate.
Expression that subtracts the second operand from the first.
Instruction basic block.
Byte order specification.
CIL AssemblyOS tables.
CIL AssemblyOS node (II.22.3).
CIL AssemblyProcessor tables.
CIL AssemblyProcessor node (II.22.4).
CIL AssemblyRefOS tables.
CIL AssemblyRefOS node (II.22.6).
CIL AssemblyRefProcessor tables.
CIL AssemblyRefProcessor node (II.22.7).
CIL AssemblyRef tables.
CIL AssemblyRef node (II.22.5).
CIL Assembly tables.
CIL Assembly node (II.22.2).
CIL ClassLayout tables.
CIL ClassLayout node (II.22.8).
CIL Constant tables.
CIL Constant node (II.22.9).
CIL CustomAttribute tables.
CIL CustomAttribute node (II.22.10).
Base class for CIL branch of binary analysis IR nodes.
CIL DeclSecurity tables.
CIL DeclSecurity node (II.22.11).
CIL EventMap tables.
CIL EventMap node (II.22.12).
CIL Event node (II.22.13).
CIL ExportedType tables.
CIL ExportedType node (II.22.14).
CIL FieldLayout tables.
CIL FieldLayout node (II.22.16).
CIL FieldMarshal tables.
CIL FieldMarshal node (II.22.17).
CIL FieldRVA tables.
CIL FieldRVA node (II.22.18).
CIL Field node (II.22.15).
CIL File node (II.22.19).
CIL GenericParamConstraint tables.
CIL GenericParamConstraint node (II.22.21).
CIL GenericParam tables.
CIL GenericParam node (II.22.20).
CIL ImplMap tables.
CIL ImplMap node (II.22.22).
CIL InterfaceImpl tables.
CIL InterfaceImpl node (II.22.23).
CIL ManifestResource tables.
CIL ManifestResource node (II.22.24).
CIL MemberRef tables.
CIL MemberRef node (II.22.25).
CIL SgAsmCilMetadataHeap node.
CIL SgAsmCilMetadataRoot.
Base class for CIL branch of binary analysis IR nodes.
CIL MethodDef tables.
CIL MethodDef node (II.22.26).
CIL MethodImpl tables.
CIL MethodImpl node (II.22.27).
CIL MethodSemantics tables.
CIL MethodSemantics node (II.22.28).
CIL MethodSpec tables.
CIL MethodSpec node (II.22.29).
CIL ModuleRef tables.
CIL ModuleRef node (II.22.31).
CIL Module node (II.22.30).
CIL NestedClass tables.
CIL NestedClass node (II.22.32).
Base class for CIL branch of binary analysis IR nodes.
CIL Param node (II.22.33).
CIL PropertyMap tables.
CIL PropertyMap node (II.22.35).
CIL Property tables.
CIL Property node (II.22.34).
CIL StandAloneSig tables.
CIL StandAloneSig node (II.22.36).
CIL TypeDef tables.
CIL TypeDef node (II.22.37).
CIL TypeRef tables.
CIL TypeRef node (II.22.38).
CIL TypeSpec tables.
CIL TypeSpec node (II.22.39).
Base class for CIL branch of binary analysis IR nodes.
Base class for CIL branch of binary analysis IR nodes.
CIL Managed Code section.
COFF symbol string table.
List of COFF symbols.
Base class for constants.
Represents the file header for DOS executables.
Expression representing a machine register.
List of dynamic linking section entries.
One entry from the dynamic linking table.
ELF section containing dynamic linking information.
List of ELF EH frame CI entries.
ELF error handling frame entry, common information entry.
List of ELF error handling frame descriptor entries.
ELF error handling frame entry frame description entry.
Represents an ELF EH frame section.
Represents the file header of an ELF binary container.
Node to hold list of ELF note entries.
One entry of an ELF notes table.
List of ELF relocation entries.
One entry of an ELF relocation table.
RelocType
Relocation Type.
Represents an ELF relocation section.
Represents one entry in an ELF section table.
SectionType
Section types (host order).
Represents an ELF section table.
Base class for ELF file sections.
Represents one entry of a segment table.
SegmentType
Segment types (host order).
Represents an ELF segment table.
ELF string table section.
ELF string table.
ELF file section containing symbols.
Represents a single ELF symbol.
List of symbol version aux entries.
Auxiliary data for an ELF Symbol Version.
List of entries for the ELF symbol version definition table.
One entry from an ELF symbol version definition table.
The GNU symbol version definitions.
List of entries from a symbol version table.
Entry in an ELF symbol version table.
Hods a list of symbol version aux entries.
Auxiliary info for needed symbol version.
List of symbol version needed entries.
One entry of the ELF symbol version needed table.
GNU symbol version requirements table.
The ELF symbol version table.
Base class for many binary analysis nodes.
ExecPurpose
General purpose of a binary executable file.
ExecABI
Application binary interface.
InsSetArchitecture
Instruction sets organized by families.
List of expression nodes.
Base class for expressions.
Floating point types.
Represents a synthesized function.
function_kind_enum
Constants for the "function_kind" property.
MayReturn
Whether a function returns.
List of pointers to other nodes.
Base class for dynamically linked library information.
List of AST file node pointers.
Base class for binary files.
Basic information about an executable container.
List of generic file headers.
Base class for container file headers.
List of pointers to file sections.
Contiguous region of a file.
SectionPurpose
Reason for section's existence.
Base class for strings related to binary specimens.
Base class for string tables.
Node to hold a list of symbol node pointers.
SymbolBinding
Symbol binding.
SymbolDefState
Symbol definition state.
Registers accessed indirectly.
List of SgAsmInstruction nodes.
Base class for machine instructions.
Base class for integer values.
Represents an interpretation of a binary container.
Represents a JVM attribute_info table/array.
Base class for a JVM attribute.
The BootstrapMethods attribute is a variable-length attribute in the attributes table of a ClassFile ...
Represents an entry in a JVM constant pool.
Represents an JVM constant pool.
JVM ConstantValue attribute.
JVM EnclosingMethod attribute.
Represents a JVM exception_info table/array.
JVM Exceptions attribute.
Represents a JVM field_info table/array.
Represents the file header of an JVM binary container.
A JVM InnerClasses attribute array entry.
Represents a JVM InnerClasses attribute.
Represents one JVS machine instruction.
JVM LineNumberTable attribute.
JVM LocalVariableEntry.
JVM LocalVariableTable attribute.
JVM LocalVariableTypeEntry.
JVM LocalVariableTypeTable attribute.
JVM MethodParametersEntry.
JVM MethodParameters attribute.
Represents a JVM method_info table/array.
JVM ModuleMainClass attribute.
JVM NestHost attribute.
JVM NestMembers attribute.
Base class for JVM branch of binary analysis IR nodes.
JVM Signature attribute.
JVM SourceFile attribute.
Represents a frame in a stack map table.
The StackMapTable attribute is a variable-length attribute in the attributes table of a Code attribut...
Represents an entry in a stack map table.
Reference to memory locations.
Represents one MIPS machine instruction.
Base class for all binary analysis IR nodes.
asm_operand_constraint_enum
ASM operand constraints (multiple values can be specified)
asm_operand_modifier_enum
ASM Operand modifiers (multiple values can be specified)
List of operands for an instruction.
List of pointers to other AST nodes.
Export file section.
Windows PE file header.
A list of PE Import Directories.
One import directory per library.
A list of imported items.
A single imported object.
Portable Executable Import Section.
List of SgAsmPERVASizePair AST nodes.
Base class for PE sections.
Represents one PowerPC machine instruction.
An ordered list of registers.
Base class for references to a machine register.
Static representation of instruction semantics.
RiscOperator
One enum per RISC operator.
Base class for scalar types.
Base class for references to a machine register.
Base class for statement-like subclasses.
Represents static data in an executable.
This class represents the concept of a C Assembler statement.
SgAsmStmt::AsmRegisterNameList p_clobberRegisterList
This is the clobber list (list of registers where side-effects happen).
SgExpressionPtrList p_operands
List of expressions.
Strings stored in an ELF or PE container.
Strings stored in an ELF or PE container.
Declaration-like nodes that encapsulate multiple instructions.
Base class for synthesized declarations.
Base class for binary types.
Base class for unary expressions.
Expression represting negation.
Expression representing a (no-op) unary plus operation.
Expression representing sign extending.
Expression representing truncation.
Expression representing unsigned extending.
Instructions defined at runtime.
Base class for values.
Base class for vector types.
A type that doesn't represent any data.
Represents one Intel x86 machine instruction.
This class represents the rhs of a variable declaration which includes an optional assignment (e....
SgExpression * p_operand_i
This points to the internal SgExpression (right-hand-side expression).
SgType * p_expression_type
This points to the SgType of the rhs expression.
attribute_spec_enum
Fortran specific classification of attribute statements (each corresponds to a declaration attribute)...
baseclass_modifier_enum
Baseclass Modifiers (only one value can be specified)
This class represents the concept of a block (not a basic block from control flow analysis).
SgStatementPtrList p_statements
This pointer an STL list of pointers to SgStatement objects.
This class represents the notion of a binary operator. It is derived from a SgExpression because oper...
SgType * p_expression_type
This SgType is the type of the operator (function type).
SgExpression * p_rhs_operand_i
This is the operand associated with the rhs of the binary operator.
SgExpression * p_lhs_operand_i
This is the operand associated with the lhs of the binary operator.
This class represents a boolean value (expression value).
int p_value
This boolean variable marks the current expression as a left hand side value (lvalue).
This class represents the notion of a break statement (typically used in a switch statment).
This class represents the concept of a generic call expression.
SgExprListExp * p_args
This is a pointer to a SgExprListExp (list of function arguments)
SgType * p_expression_type
This is the type of the return value of the function.
SgExpression * p_function
This pointer points to the expression being assembled with argments for be a function call.
This class represents the concept of a C and C++ case option (used within a switch statement).
SgStatement * p_body
This pointer points to a SgBasicBlock object.
SgExpression * p_key_range_end
This pointer points to the last constant in the range when a gnu range case label is used.
This class represents a cast of one type to another.
cast_type_enum
Classification of Casts.
This class represents the concept of a catch within a try-catch construct used in C++ exception handl...
SgTryStmt * p_trystmt
This pointer to a SgTryStmt (a declaration) that is associated with this catch option.
SgStatement * p_body
This pointer to a SgBasicBlock used to hold the statements to be executed when the exception is caugh...
SgVariableDeclaration * p_condition
This pointer to a SgVariableDeclaration.
This class represents the concept of a C++ sequence of catch statements.
SgStatementPtrList p_catch_statement_seq
This is an STL list of pointers to SgStatement objects.
This class represents the concept of a class declaration statement. It includes the concept of an ins...
SgName p_name
This is the name of the class or instantiated class template.
SgClassDefinition * p_definition
This is the class definition (alway a valid pointer, except for explicitly marked forward declaration...
bool p_from_template
This records if the class declaration is associated with a template.
SgClassType * p_type
This is the type used in the declaration (SgClassType).
SgClassDeclaration::class_types p_class_type
Enum value classifying this as a class,struct,or union.
This class represents the concept of a class definition in C++.
SgDeclarationStatementPtrList p_members
This the list of member declarations in the class.
SgBaseClassPtrList p_inheritances
This the list of base classes specificed in the class definition.
This class represents the concept of a C++ expression built from a class name.
SgClassSymbol * p_symbol
This pointer points to a SgClassSymbol.
This class represents the concept of a class name within the compiler.
This class represents the concept of a C style extern "C" declaration. But such information (linkage)...
This class represents the concept of a C trinary conditional expression (e.g. "test ?...
SgExpression * p_conditional_exp
This pointer points to a SgExpression object.
SgExpression * p_false_exp
This pointer points to a SgExpression object.
SgExpression * p_true_exp
This pointer points to a SgExpression object.
SgType * p_expression_type
This pointer points to a SgType object.
cv_modifier_enum
Const Volatile Modifier.
This class represents the call of a class constructor to initialize a variable. For example "Foo foo;...
SgType * p_expression_type
This points to the associated type for this constructor.
bool p_need_parenthesis_after_name
This bool value controls the output of "()" after the class name.
bool p_associated_class_unknown
This bool value indicates when p_declaration should be a valid pointer.
bool p_need_qualifier
This bool value controls the output of the class names qualifier.
SgMemberFunctionDeclaration * p_declaration
This points to the associated member function declaration (a constructor).
SgExprListExp * p_args
This points to the argument list of the associated constructor call.
bool p_need_name
This bool value controls the output of the class name.
This class represents the concept of a C or C++ continue statement.
This class represents the concept of a contructor initializer list (used in constructor (member funct...
SgInitializedNamePtrList p_ctors
This is an STL list of pointers to SgInitializedName objects.
data_statement_value_enum
Support for Fortran data statement.
This class represents modifiers for SgDeclaration (declaration statements).
SgStorageModifier p_storageModifier
Modified for storage information.
SgAccessModifier p_accessModifier
Modifier for access information (only set for declarations in class and struct definitions)
SgBitVector p_modifierVector
Bit vector permitting specification of flags for friend, typedef, export, throw.
SgTypeModifier p_typeModifier
Modifier for type information.
gnu_declaration_visability_enum
GNU attribute for visability (only one value can be specified)
This class represents the concept of a declaration statement.
bool p_nameOnly
I think this is somewhat redundant with the purpose of specifying a forward declaration....
gnu_extension_visability_attribute_enum
GNU extension for visibility modifier (only one value can be specified)
SgDeclarationStatement * p_firstNondefiningDeclaration
This pointer is valid if there is a non-defining declaration, and stores the first non-defining decla...
std::string p_linkage
This string stores the value "C", "C++", or "fortran" to define the external linkage for generating l...
template_specialization_enum
Template Specialization Support.
SgDeclarationModifier p_declarationModifier
This is the mechanism to handle declaration modifiers.
SgDeclarationStatement * p_definingDeclaration
This pointer is valid only if a defining declaration exists, and stores the defining declaration wher...
bool p_externBrace
This marks that the declaration appeared with "extern".
unsigned int p_decl_attributes
This is old and used to be used to hold modifiers.
bool p_forward
This marks a declaration as being an explicit forward declaration.
bool p_skipElaborateType
This marks "type elaboration" which is the use of the keyword "class" before variables of type class.
This class represents the concept of a C or C++ default case within a switch statement.
SgStatement * p_body
This pointer points to SgBasicBlock holding the statements executed for the default case of a switch ...
This class represents the concept of a C++ call to the delete operator.
short p_need_global_specifier
This delete operator needs to be output with "::".
SgExpression * p_variable
This pointer points to the variable being deleted.
short p_is_array
This bool value is true only if the delete operator is called on an array (array delete).
This class represents a directory within a projects file structure of files and directories.
This class represents the concept of a do-while statement.
SgStatement * p_condition
This pointer a SgStatement, the conditional expression in the loop construct.
SgStatement * p_body
This pointer a SgBasicBlock, and holds the statements in the body of the loop.
This class represents the notion of an value (expression value).
double p_value
This value holds the double represented in the source code.
elaborated_type_modifier_enum
Elaborated Type Modifiers (only one value can be specified)
This class represents the concept of an enum declaration.
SgName p_name
Name of enum type (empty if not named).
SgEnumType * p_type
SgEnumType generated by this enum declaration.
SgScopeStatement * p_scope
Scope of enum declaration.
SgInitializedNamePtrList p_enumerators
STL list of pointers to SgInitializedName object (used for enum variables).
bool p_embedded
Boolean value true if embedded in a typedef declaration (might not be used).
This class represents the concept of the dynamic execution of a string, file, or code object....
SgExpression * p_globals
The global execution environment.
SgExpression * p_executable
The object to be executed.
SgExpression * p_locals
The local execution environment.
This class represents the concept of a C and C++ expression list.
This class represents the concept of a C or C++ statement which contains a expression.
This class represents the notion of an expression. Expressions are derived from SgLocatedNodes,...
bool p_lvalue
This boolean variable marks the current expression as a left hand side value (lvalue).
bool p_need_paren
This boolean value marks the current expression as requiring parenthises.
This class represents a source file for a project (which may contian many source files and or directo...
ROSEAttributesListContainerPtr p_preprocessorDirectivesAndCommentsList
This is the container of comments and preprocessor control statements that was extracted from the fil...
outputFormatOption_enum
Enum type used to specify output of Fortran as fixed for free format.
bool p_no_implicit_inline_templates
This is a reference to the GNU g++ command line option (same name).
bool p_no_implicit_templates
This is a reference to the GNU g++ command line option (same name).
SgStringList p_originalCommandLineArgumentList
Copy of original argc and argv command line passed to ROSE translator (converted to STL list of strin...
languageOption_enum
Enum type used to specify output language (option used for testing unparsers).
This class represents the notion of an value (expression value).
float p_value
This value holds the float represented in the source code.
forall_statement_kind_enum
This class represents forall statements and the Fortran do concurrent construct.
This class represents the variable declaration or variable initialization withn a for loop.
SgStatementPtrList p_init_stmt
This pointer points to list of initializers in a SgForStatement.
This class represents the concept of a for loop.
SgForInitStatement * p_for_init_stmt
This pointer a SgForInitStatement (a list of pointers to statements (SgStatement objects) ).
SgStatement * p_loop_body
This pointer a SgBasicBlock, and holds the statements in the body of the loop.
SgStatement * p_else_body
Holds the statements in the else body of the loop. Currently, only Python supports for loops with els...
This class represents the concept of a C++ function call (which is an expression).
This class represents the concept of a function declaration statement.
SgFunctionDefinition * p_definition
This variable stores the SgFunctionDefinition.
SgName p_name
This variable stores the string representing the function name.
SgFunctionType * p_type
This variable stores the SgFunctionType.
SgExprListExp * p_decoratorList
This variable stores a list of decorators.
bool p_oldStyleDefinition
This boolean variable records if the function uses the old style definition.
SgSpecialFunctionModifier p_specialFunctionModifier
This variable stores flags representing use of constructor, destructor, etc.
SgFunctionModifier p_functionModifier
This variable stores flags representing use of inline, virtual, etc.
This class represents the concept of a scope in C++ (e.g. global scope, fuction scope,...
SgBasicBlock * p_body
This pointer is always valid and points to a SgBasicBlock holding all the statements in the function.
This class represents the concept of a declaration list.
SgInitializedNamePtrList p_args
STL list of pointers to SgInitializedName object (used for function parameter declarations).
This class represents the function being called and must be assembled in the SgFunctionCall with the ...
This class represents the concept of a name and a type. It may be renamed in the future to SgTypeSymb...
This class represents the function type table (stores all function types so that they can be shared i...
SgSymbolTable * p_function_type_table
This pointer points to SgSymbolTable used to store function type symbols only.
This class represents a type for all functions.
This class represents the concept of a namespace definition.
SgDeclarationStatementPtrList p_declarations
This is an STL list of SgDeclarationStatement objects.
This class represents the concept of a C or C++ goto statement.
SgLabelStatement * p_label
This pointer points to the SgLabelStatement where control flow will be transfered during execution.
io_statement_enum
Fortran specific classification.
This class represents the concept of an "if" construct.
SgStatement * p_conditional
This pointer a SgStatement.
SgStatement * p_false_body
This pointer a SgBasicBlock, and holds the statements in the "false" body of if statement.
SgStatement * p_true_body
This pointer a SgBasicBlock, and holds the statements in the "true" body of if statement.
image_control_statement_enum
Fortran specific classification for image control statements.
This class represents the notion of a declared variable.
SgInitializedName * p_prev_decl_item
Pointer to the initial uses of this variable previous to its redeclaration declaration.
SgStorageModifier * p_storageModifier
This is the storage modifier (static, auto, register, mutable, asm, etc.).
asm_register_name_enum
Register names (x86 specific GNU names).
SgScopeStatement * p_scope
This pointer is always valid and stores the current scope of the variable.
bool p_is_initializer
flag to determine whether the declaration has an initializer.
SgInitializedName::asm_register_name_enum p_register_name_code
Code (following GNU standard) for register name.
SgInitializer * p_initptr
Pointer to an initializer for the variable.
SgInitializedName::preinitialization_enum p_preinitialization
This data member stores an enum value.
SgType * p_typeptr
Pointer to a type object that has been associated with SgInitializedName::p_name.
SgName p_name
The variable that is declared in this declaration.
SgDeclarationStatement * p_declptr
Pointer to the declaration object where this SgInitializedName object belongs to.
preinitialization_enum
Preinitialization Enum (only one value can be specified)
This class represents the notion of an initializer for a variable declaration or expression in a func...
bool p_is_explicit_cast
This boolean variable marks the initializer ans part of an explicit or implicit cast....
This class represents the physical disequality (often called pointer disequality) operator for langua...
This class represents the physical equality (often called pointer equality) operator for languages th...
loop_statement_type_enum
This class represents the various versions of Jovial loop statements.
WordsPerEntry
Enum for words-per-entry in a Jovial table.
StructureSpecifier
Enum for Jovial structure specifiers.
This class represents the concept of a C or C++ label statement.
SgName p_label
This a SgName object which stores the name of the label.
label_type_enum
Type of label used (fortran only)
This class represents a lambda expression.
SgFunctionDeclaration * p_functionDeclaration
The implicit function referred to by this lambda.
linkage_modifier_enum
Linkage Modifiers (only one value can be specified)
This class represents a list display.
This class represents the notion of an expression or statement which has a position within the source...
AttachedPreprocessingInfoType * p_attachedPreprocessingInfoPtr
Holds comments and/or preprocessor directives located before or after the current statement of expres...
Sg_File_Info * p_endOfConstruct
This pointer is always valid and stores the source position of the end of the current construct.
Sg_File_Info * p_startOfConstruct
This pointer is always valid and stores the source position of the start of the current construct.
This class represents the notion of an value (expression value).
long double p_value
This value holds the double represented in the source code.
This class represents the concept of a member function declaration statement.
SgCtorInitializerList * p_CtorInitializerList
This is the constructor preinitialization list (used only for the constructor definitions).
This class represents the member function being called and must be assembled in the SgFunctionCall wi...
SgMemberFunctionSymbol * p_symbol_i
This is the SgMemberFunctionSymbol.
SgFunctionType * p_function_type
This is a pointer to the SgFunctionType associated with this member function reference.
int p_need_qualifier
This boolean value marks if name qualification is required.
int p_virtual_call
This boolean value marks if the function reference is a virtual function.
This class represents the numeric negation of a value. Not to be confused with SgSubtractOp.
This class is not used in ROSE, but is intended to represent a list of SgModifierTypes (similar to th...
This class represents the base class of a number of IR nodes define modifiers within the C++ grammar.
This class represents strings within the IR nodes.
std::string p_char
This pointer points to an internal C style string.
This class represents the concept of a C++ namespace alias declaration statement.
SgNamespaceDeclarationStatement * p_namespaceDeclaration
This the namespace to which the alis references.
SgName p_name
This the name of the new namespace alias (usually a shorter name).
This class represents the concept of a C++ namespace declaration.
bool p_isUnnamedNamespace
Records special case of an unnamed namespace.
SgName p_name
This the name of the new namespace alias (usually a shorter name).
SgNamespaceDefinitionStatement * p_definition
This pointer points to the SgNamespaceDefinitionStatement, which holds the declarations within the na...
This class represents the concept of a namespace definition.
SgDeclarationStatementPtrList p_declarations
This is an STL list of SgDeclarationStatement objects.
SgNamespaceDeclarationStatement * p_namespaceDeclaration
This is a pointer to the SgNamespaceDeclarationStatement.
This class represents the concept of a namespace name within the compiler.
This class represents the notion of an n-ary boolean operation. This node is intended for use with Py...
This class represents the notion of an n-ary comparison operation. This node is intended for use with...
This class represents the notion of an n-ary operator. This node is intended for use with Python.
SgExpressionPtrList p_operands
This is the list of operands associated with this n-ary operator.
VariantTList p_operators
This is the list of operators associated with this n-ary operator.
This class represents the concept of a C++ call to the new operator.
SgExprListExp * p_placement_args
This is a pointer to the memory allocation placement arguments for the new operator.
short p_need_global_specifier
This new operator needs to be output with "::".
SgExpression * p_builtin_args
This is a pointer to the builtin arguments for the new operator (typically the "this" pointer where s...
SgConstructorInitializer * p_constructor_args
This is a pointer to the constructor initializer (which holds its constructor arguments) for the new ...
This class represents the base class for all IR nodes within Sage III.
SgNode * p_parent
This is the pointer to the parent IR node in the AST.
bool p_isModified
Records if IR node has been modified (data members reset).
SgNode * p_freepointer
This is the pointer to the chain of previously freed objects.
omp_default_option_enum
OpenMP default clause values.
This class represents an object used to initialize the unparsing.
This class represents a Fortran pointer assignment. It is not some weird compound assignment operator...
This class represents the concept of a C Assembler statement (untested).
subprogram_kind_enum
Classification for different types of Fortran subprograms.
This class represents a source project, with a list of SgFile objects and global information about th...
SgStringList p_librarySpecifierList
List of libraries specified using "-lxxx" syntax.
bool p_prelink
This controls if we are to handle the prelink (not implemented).
bool p_openmp_linking
This flag is used to indicate if OpenMP lowering is requested by the command line so linking to ROSE'...
SgStringList p_includeDirectorySpecifierList
List of directories specified with "-I" option on command line.
SgStringList p_objectFileNameList
List of all object files specified on the command line.
SgStringList p_originalCommandLineArgumentList
Copy of original argc and argv command line passed to ROSE translator (converted to STL list of strin...
SgProject::template_instantiation_enum p_template_instantiation_mode
This controls the degree of template instantiation by ROSE. No template instantiation is required by ...
template_instantiation_enum
int p_backendErrorCode
Error code returnd from processing of generated source code using vendor compiler.
SgStringList p_libraryFileList
List of all libraries specified on command line.
bool p_compileOnly
This controls if we are to act as a linker (by calling the vendor compiler as a linker/prelinker).
int p_frontendErrorCode
Error code returned from EDG front-end processing.
SgStringList p_sourceFileNameList
List of all source file names specified on the command line.
SgStringList p_libraryDirectorySpecifierList
List of directories specified with "-L" option on command line.
std::string p_outputFileName
Filename specific using "-o" option on command line.
This class represents the concept of a 'global' stmt in Python.
SgInitializedNamePtrList p_names
This is a list of SgInitializedNames that are imported into the inner scope.
This class represents a OLD concept of the structure require for qualified names when they were in th...
This class represents a OLD concept of the structure require for qualified names when they were in th...
This class represents the "&" operator (applied to any lvalue).
SgType * p_type_name
This a SgType, but I forget its significance.
This class represents the concept of a C Assembler statement (untested).
This class was part of CC++ support from a long time ago.
This class represents the concept of a scope in C++ (e.g. global scope, fuction scope,...
SgSymbolTable * p_symbol_table
This pointer is always valid and stores the symbl table.
This class represents the "sizeof()" operator (applied to any type).
SgType * p_expression_type
This a SgType, the type of the expression.
SgType * p_operand_type
This a pointer to the SgType given to the sizeof operator.
SgExpression * p_operand_expr
This a pointer to the expression given to the sizeof operator.
This class is part of the older CC++ concept. It is not a part of C or C++ (this IR node is not used ...
This class represents the GNU extension "statement expression" (thus is non-standard C and C++).
SgStatement * p_statement
This a pointer to the SgStatement (usually a SgBasicBlock).
This class represents the notion of a statement.
This class is intended to be a wrapper around SgStatements, allowing them to exist in scopes that onl...
SgStatement * p_statement
Holds the wrapped statement.
This class represents modifiers specific to storage.
storage_modifier_enum
Storage Modifiers (only one value can be specified)
This class represents the conversion of an arbitrary expression to a string. This node is intended fo...
SgExpression * p_expression
The expression to be converted to a string.
jovial_structure_modifier_enum
Jovial Structure Modifier/Specifier (tight implies serial)
This class represents the base class of a numbr of IR nodes that don't otherwise fit into the existin...
This class represents the concept of a switch.
SgStatement * p_body
This pointer a SgBasicBlock, and holds the cases in the body of the switch.
This class represents the symbol tables used in both SgScopeStatement and the SgFunctionTypeSymbolTab...
SgName p_name
This is the symbol name (mangled is required).
hash_iterator p_iterator
This iterator is used within some of the deprecated functions.
bool p_no_name
This is a flag to indicate that p_name is empty.
rose_hash_multimap * p_table
This is lower level symbol table implementation (using an STL hash_multimap)
This class represents the concept of a name within the compiler.
This class represents template argument within the use of a template to build an instantiation.
bool p_isArrayBoundUnknownType
Template arguments can be used as array bounds, if so this this marks the arguments use as such.
SgType * p_type
This is the template argument's reference to a type (if it is a type).
bool p_explicitlySpecified
This true only if for a function template the argument is explicit in the source code (it need not al...
SgExpression * p_expression
This is the template argument's reference to an expression (if it is an expression).
This class represents the concept of a template declaration.
SgName p_string
This is the full template declaration as a string only.
SgName p_name
This is the name of the template.
SgScopeStatement * p_scope
This is the scope of the template declaration.
SgTemplateParameterPtrList p_templateParameters
This is the STL list of pointers template parameters (SgTemplateParameter objects)
SgTemplateDeclaration::template_type_enum p_template_kind
This is the classification of the template declaration.
This class represents the concept of an instantiated class template.
SgTemplateClassDeclaration * p_templateDeclaration
This is the template declarations (SgTemplateDeclaration) from which this template instantiation is c...
SgTemplateArgumentPtrList p_templateArguments
This is a pointer to a list of pointers to SgTemplateArgument objects (used with the SgTemplateDeclar...
SgName p_templateName
This is the name of the templated class (excludes template arguments)
SgName p_templateHeader
This data field is not used (or is used internally).
bool p_nameResetFromMangledForm
This bool value is set to false at construction and later reset to true within post-processing as eac...
This class represents the concept of a class definition in C++.
This class represents the concept of a C++ template instantiation directive.
SgDeclarationStatement * p_declaration
This pointer points to associated template instantiation declaration meant to be explicitly instantia...
This class represents the concept of an instantiation of function template.
SgTemplateFunctionDeclaration * p_templateDeclaration
This is the template declarations (SgTemplateDeclaration) from which this template instantiation is c...
bool p_nameResetFromMangledForm
This bool value is set to false at construction and later reset to true within post-processing as eac...
SgTemplateArgumentPtrList p_templateArguments
This is a pointer to a list of pointers to SgTemplateArgument objects (used with the SgTemplateDeclar...
SgName p_templateName
This is the name of the templated class (in the form "name<args>")
This class represents the concept of an instantiation of member function template or a member functio...
SgName p_templateName
This is the name of the templated class (in the form "name<args>")
SgTemplateMemberFunctionDeclaration * p_templateDeclaration
This is the template declarations (SgTemplateDeclaration) from which this template instantiation is c...
SgTemplateArgumentPtrList p_templateArguments
This is a pointer to a list of pointers to SgTemplateArgument objects (used with the SgTemplateDeclar...
bool p_nameResetFromMangledForm
This bool value is set to false at construction and later reset to true within post-processing as eac...
This class represents the "this" operator (can be applied to any member data).
int p_pobj_this
This is not used and is related to a flag from CC++.
SgClassSymbol * p_class_symbol
This is the symbol of the class to which the "this" operator is applied.
This class represents the C++ throw expression (handled as a unary operator).
e_throw_kind
Throw IR node can be used in three different ways.
SgThrowOp::e_throw_kind p_throwKind
This enum value classifies the throw as either of three different kinds.
This class represents the concept of try statement within the try-catch support for exception handlin...
SgStatement * p_else_body
This pointer points to a SgBasicBlock containing the statements to be executed when control flows off...
SgStatement * p_finally_body
This pointer points to a SgBasicBlock containing the statements to be executed when an unhandled exce...
SgCatchStatementSeq * p_catch_statement_seq_root
This pointer points to a SgCatchStatementSeq and connects the try statement to the sequence of catch ...
SgStatement * p_body
This pointer points to a SgBasicBlock containing the statements to be execued by the try block.
This class represents a tuple display.
This class represents a C99 complex type.
This class represents a default type used for some IR nodes (see below).
This class represents a C99 complex type.
gnu_extension_machine_mode_enum
GNU Extension Machine Mode type modifiers (only a single value can be specified at one time)
This class represents a string type used for SgStringVal IR node.
This class represents the base class for all types.
SgTypedefSeq * p_typedefs
This points to IR node which holds a list of typedefs where the base_type if this SgType.
SgReferenceType * p_ref_to
This holds the pointer to a SgReferenceType if this type is a reference to another type.
SgModifierNodes * p_modifiers
This points to any SgModifierNodes if this type contains type modifiers.
SgPointerType * p_ptr_to
This holds the pointer to a SgPointerType if this type is a pointer to another type.
int p_substitutedForTemplateParam
This boolean variable marks if the current type was originally a template parameter.
This class represents the notion of a typedef declaration.
SgTypedefType * p_type
This is the resulting type defined by the typedef declaration.
SgType * p_base_type
This is the type being given a new name by the typedef declaration.
bool p_typedefBaseTypeContainsDefiningDeclaration
This flag indicates that the typedef defines a structure.
SgName p_name
This is the name of the newly defined type.
SgScopeStatement * p_scope
This is the scope of the typedef declaration.
SgSymbol * p_parent_scope
This is the type symbol of the class when it is a member type (redundent with the the explicitly stor...
SgDeclarationStatement * p_declaration
pointer to the declaration (typically a SgClassDeclaration).
This class represents a list of associated typedefs for the SgType IR nodes which reference this list...
SgTypePtrList p_typedefs
This holds the STL list of pointers to SgTypes.
upc_access_modifier_enum
UPC Access Modifiers (only one value can be specified)
This class represents the notion of a unary operator. It is derived from a SgExpression because opera...
SgExpression * p_operand_i
This is the operand associated with the unary operator.
Sgop_mode
Enum value defines operators as prefix or postfix, as appropriate, e.g. operator++().
SgUnaryOp::Sgop_mode p_mode
This SgType is the type of the operator (function type).
SgType * p_expression_type
This SgType is the type of the operator (function type).
This class represents the concept of a C++ using declaration.
SgDeclarationStatement * p_declaration
This pointer points to a SgDeclarationStatement whose declaration(s) are available for use in the sco...
SgInitializedName * p_initializedName
This pointer points to a SgDeclarationStatement whose declaration(s) are available for use in the sco...
This class represents the concept of a C++ using directive.
SgNamespaceDeclarationStatement * p_namespaceDeclaration
This pointer points to namespace declaration being used.
This class represents the notion of an value (expression value).
This class represents the variable refernece in expressions.
This class represents the concept of a C or C++ variable declaration.
SgDeclarationStatement::template_specialization_enum p_specialization
This is part of template support (variables of templated types).
SgDeclarationStatement * p_baseTypeDefiningDeclaration
This is used to traverse type definitions within variable declarations.
gnu_extension_declaration_attributes_enum
GNU extension for declaration modifiers (multiple values may be specified)
bool p_variableDeclarationContainsBaseTypeDefiningDeclaration
This bool records if the variable declaration has the explicit defining declaration associated with i...
SgInitializedNamePtrList p_variables
This is an STL list of pointers to SgInitializedName objects.
This class represents the definition (initialization) of a variable.
SgExpression * p_bitfield
This a pointer to a value specifies the bitwidth of the variable (used to control memory layout/paddi...
SgInitializedName * p_vardefn
This pointer points to associated SgInitializedName object (the variable).
This class represents the concept of a variable name within the compiler (a shared container for the ...
This class represents the concept of a do-while statement.
SgStatement * p_condition
This pointer a SgStatement, the conditional expression in the loop construct.
SgStatement * p_body
This pointer a SgBasicBlock, and holds the statements in the body of the loop.
SgStatement * p_else_body
This pointer to an SgStatement holds the body of the 'else' block.
This class represents the location of the code associated with the IR node in the original source cod...
unsigned int p_classificationBitField
This is mechanism for classification of the IR node.
int p_file_id
This is a key that maps integers to file names, it prevents redundent storage of filename strings.
SgFileIdList p_fileIDsToUnparse
This set contains a list of all file ids for which the accompanying IR node should be unparsed.
int p_col
This is the column number of the location of the source code for this IR node.
int p_line
This is the line number of the location of the source code for this IR node.
Hash table support for symbol tables within ROSE.
Sawyer::Container::IntervalSet< AddressInterval > AddressIntervalSet
A set of virtual addresses.
X86InstructionKind
List of all x86 instructions known to the ROSE disassembler/assembler.
The ROSE library.
Sawyer support library.
A template list implementing a apply pattern (functor return void but does not have to be pure)
Definition metaprog.h:79